curl获取网页内容出现乱码或为空的解决方案,另附curl_getinfo函数解析
来源:互联网 发布:安徽财经大学网络课程 编辑:程序博客网 时间:2024/06/07 14:53
闲来无事,显示大致看了看php关于curl的应用,然后试着写了点东西,然后就直接折戟沉沙了,,,出现一串乱码,遂百度,发现一些解决方案,在此分享给大家。
一、出现乱码等解决方案
$url = 'http://www.baidu.com'; $ch = curl_init($url); curl_setopt($ch,CURLOPT_RETURNTRANSFER,true); curl_setopt($ch, CURLOPT_HEADER, 0);//3.抓取URL并把它传递给浏览器 $rs = curl_exec($ch);//4.关闭cURL资源,并且释放系统资源 curl_close($ch); $rs = mb_convert_encoding($rs, 'utf-8', 'GBK,UTF-8,ASCII'); //加上这行 var_dump($rs);
这就是我碰到的第一个问题,百度的网页都获取不了了
(1)利用php的curl抓取网站信息,出现中文乱码的情况:
$rs = curl_exec($ch);
//关闭cURL资源,并且释放系统资源
curl_close($ch);
$rs = mb_convert_encoding($rs, 'utf-8', 'GBK,UTF-8,ASCII'); //加上这行
(2)如果抓取的网页进行了gzip压缩,那么获取的内容很有可能是乱码
解决方案:curl_setopt($ch,CURLOPT_ENCODING,'gzip')//加入gzip解析
(3)如果curl请求的网页发生了重定向,那么抓取的结果很可能为空
解决方案:curl_setopt($ch,CURLOPT_FOLLOWLOCATION,1);//加入重定向处理
二、关于curl_getinfo
curl_getinfo的使用。返回来一个数组类型的值,里面有一个url,有一个http_code,http_code可以是302,200,404,500等,如果是302的话,
就是页面跳转,直接可以得到跳转的页面的url。
如果是想取到具体的值,可以采用:curl_getinfo($ch,CURLINFO_HTTP_CODE),则会返回一个http_code字符串。
参数(20个):
CURLINFO_EFFECTIVE_URL – 最后一个有效的URL地址
CURLINFO_HTTP_CODE – 最后一个收到的HTTP代码
CURLINFO_FILETIME – 远程获取文档的时间,如果无法获取,则返回值为“-1”
CURLINFO_TOTAL_TIME – 最后一次传输所消耗的时间
CURLINFO_NAMELOOKUP_TIME – 名称解析所消耗的时间
CURLINFO_CONNECT_TIME – 建立连接所消耗的时间
CURLINFO_PRETRANSFER_TIME – 从建立连接到准备传输所使用的时间
CURLINFO_STARTTRANSFER_TIME – 从建立连接到传输开始所使用的时间
CURLINFO_REDIRECT_TIME – 在事务传输开始前重定向所使用的时间
CURLINFO_SIZE_UPLOAD – 上传数据量的总值
CURLINFO_SIZE_DOWNLOAD – 下载数据量的总值
CURLINFO_SPEED_DOWNLOAD – 平均下载速度
CURLINFO_SPEED_UPLOAD – 平均上传速度
CURLINFO_HEADER_SIZE – header部分的大小
CURLINFO_HEADER_OUT – 发送请求的字符串
CURLINFO_REQUEST_SIZE – 在HTTP请求中有问题的请求的大小
CURLINFO_SSL_VERIFYRESULT – 通过设置CURLOPT_SSL_VERIFYPEER返回的SSL证书验证请求的结果
CURLINFO_CONTENT_LENGTH_DOWNLOAD – 从Content-Length: field中读取的下载内容长度
CURLINFO_CONTENT_LENGTH_UPLOAD – 上传内容大小的说明
CURLINFO_CONTENT_TYPE – 下载内容的Content-Type:值,NULL表示服务器没有发送有效的Content-Type: header
可以根据需要设置不同的参数。
- curl获取网页内容出现乱码或为空的解决方案,另附curl_getinfo函数解析
- curl获取网页内容
- file_get_contents返回为空或函数不可用的解决方案
- “QT中QString 转const char*为乱码或为空的问题 ”之解决方案
- 使用cURL获取网页内容
- c#抓取网页内容乱码的解决方案
- Android Sax解析XML出现空值或脏数据的解决方案
- Android Sax解析XML出现空值或脏数据的解决方案
- python中requests爬去网页内容出现乱码的解决方案
- 网页出现了乱码的解决方案
- 网页出现了乱码的解决方案
- PHP中cURL的curl_getinfo函数返回的CURLINFO_HTTP_CODE是0
- 获取网页内容时的乱码问题
- IDHTTP获取网页的内容或源码
- 用xmlhttpRequest获取同域网页中文出现乱码解决方案
- PHP 通过curl库函数获取网页内容
- 插件72:用Curl获取网页内容
- 如何使用curl获取网页内容
- Android Wi-Fi TDLS调用流程
- STL的一些东西
- 二元多项式基本运算 选择合适的存储结构表示二元多项式,并实现基本的加减运算 要求: 1)二元多项式的输入采用如下方式进行键盘输入 (5y^2+7)x^4 + (3y^4+2y+9)x^2 + (2y
- Android自定义View之-----日历控件
- java之Runnable和Thread区别与实现方法
- curl获取网页内容出现乱码或为空的解决方案,另附curl_getinfo函数解析
- As3基础部分5
- EditText作为密码框,点击可见不可见按钮,实现密码的可见和不可见
- Android Wi-Fi 系统硬件抽象层原理与实现
- 泛型-通配符-------(2)
- Linux文件系统:ext2/ext3
- 【loli的胡策】NOIP训练7.15(签到+dp+线段树)
- android异常Error:Execution failed for task ':app:processDebugManifest'. > Manifest merger failed with
- eclipse和tomcat的整合