curl抓取网页内容时的重定向和乱码解决
2015-11-24 20:55
225 查看
url=‘网址′;ch = curl_init(); //初始化
// 设置选项,包括URL
curl_setopt(ch,CURLOPTURL,url);
//是否将参数返回到页面中(0表示是1表示否)
curl_setopt(ch,CURLOPTRETURNTRANSFER,1);curlsetopt(ch, CURLOPT_HEADER, 0);
curl_setopt(ch,CURLOPTUSERAGENT,“Mozilla/5.0(WindowsNT6.1;WOW64)AppleWebKit/537.22(KHTML,likeGecko)Chrome/25.0.1364.172Safari/537.22”);//语句1curlsetopt(ch, CURLOPT_ENCODING ,’gzip’); //gzip解析
curl_setopt(ch,CURLOPTFOLLOWLOCATION,1);//加入重定向处理,防止输出网页时不显示,要与“语句1”配合使用//获取网页HTML文档内容output = curl_exec(ch);info = curl_getinfo(ch);if(output === FALSE) {
echo “cURL Error: ” . curl_error(ch);//检查错误并输出
}
curl_close(ch);
output=iconv("UTF−8","GB2312//IGNORE",data) ;//转码,防止乱码
var_dump(info);vardump(output);
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:
// 设置选项,包括URL
curl_setopt(ch,CURLOPTURL,url);
//是否将参数返回到页面中(0表示是1表示否)
curl_setopt(ch,CURLOPTRETURNTRANSFER,1);curlsetopt(ch, CURLOPT_HEADER, 0);
curl_setopt(ch,CURLOPTUSERAGENT,“Mozilla/5.0(WindowsNT6.1;WOW64)AppleWebKit/537.22(KHTML,likeGecko)Chrome/25.0.1364.172Safari/537.22”);//语句1curlsetopt(ch, CURLOPT_ENCODING ,’gzip’); //gzip解析
curl_setopt(ch,CURLOPTFOLLOWLOCATION,1);//加入重定向处理,防止输出网页时不显示,要与“语句1”配合使用//获取网页HTML文档内容output = curl_exec(ch);info = curl_getinfo(ch);if(output === FALSE) {
echo “cURL Error: ” . curl_error(ch);//检查错误并输出
}
curl_close(ch);
output=iconv("UTF−8","GB2312//IGNORE",data) ;//转码,防止乱码
var_dump(info);vardump(output);
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:
相关文章推荐
- iOS_NSURLSession
- 杭电ACM1997——汉诺塔VII
- 每天一点matlab——图像二值化,人为设定阈值
- Android文本目录介绍
- Logistic Regression Vs Decision Trees Vs SVM: Part I
- bzoj1194
- 中序线索化二叉树的算法验证
- python 里连续两次open后的后果
- Tcp 断开连接(重要)
- Android——调用系统摄像头拍照的问题
- hdu 1074 状态压缩DP 贪心 错的原因
- java实现类似函数指针功能
- 如何将js中的值传到后台action中
- 前端模块化工具-webpack
- 编写linux静态库
- JavaScript Number数字类型
- 第二个Sprint冲刺第二天(燃尽图)
- (社会工程学攻击)安全书籍中的重要笔记摘要
- leetcode_182_duplicate_emails
- 华为oj 合法ip