PHP curl实现抓取302跳转后页面的示例


Posted in PHP onJuly 04, 2014

PHP的CURL正常抓取页面程序如下:

$url = 'http://www.baidu.com';

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, $url); 
curl_setopt($ch, CURLOPT_VERBOSE, true); 
curl_setopt($ch, CURLOPT_HEADER, true);
curl_setopt($ch, CURLOPT_NOBODY, true);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'GET');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($ch, CURLOPT_TIMEOUT, 20); 
curl_setopt($ch, CURLOPT_AUTOREFERER, true); 
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); 
$ret = curl_exec($ch); 
$info = curl_getinfo($ch); 
curl_close($ch);

如果你抓取到的是302状态,是因为再抓取的过程中,有的跳转需要给下一个链接传递参数,而下一个链接同时也设置了如果没接收到相应的参数是为非法访问。

curl_setopt($curl, CURLOPT_CUSTOMREQUEST, 'GET');

显示就应该正常了。

上面用来抓取功能,几乎应该没问题的。你可以查一下CURLOPT_CUSTOMREQUEST相关资料。

使用一个自定义的请求信息来代替”GET”或”HEAD”作为HTTP请求。这对于执行”DELETE” 或者其他更隐蔽的HTTP请求。有效值如”GET”,”POST”,”CONNECT”等等。也就是说,不要在这里输入整个HTTP请求。例如输入”GET /index.html HTTP/1.0\r\n\r\n”是不正确的。

PHP 相关文章推荐
session在php5.3中的变化 session_is_registered() is deprecated in
Nov 12 PHP
php二分查找二种实现示例
Mar 12 PHP
教你如何用php实现LOL数据远程获取
Jun 10 PHP
PHP统计目录大小的自定义函数分享
Nov 18 PHP
php采集神器cURL使用方法详解
Feb 19 PHP
简单谈谈PHP中的trait
Feb 25 PHP
PHP封装的XML简单操作类完整实例
Nov 13 PHP
PHP删除数组中指定下标的元素方法
Feb 03 PHP
PHP抽象类与接口的区别实例详解
May 09 PHP
tp5框架前台无限极导航菜单类实现方法分析
Mar 29 PHP
Laravel如何实现适合Api的异常处理响应格式
Jun 14 PHP
PHP+Redis链表解决高并发下商品超卖问题(实现原理及步骤)
Aug 03 PHP
PHP不用递归遍历目录下所有文件的代码
Jul 04 #PHP
对于ThinkPHP框架早期版本的一个SQL注入漏洞详细分析
Jul 04 #PHP
PHP+Memcache实现wordpress访问总数统计(非插件)
Jul 04 #PHP
php+memcache实现的网站在线人数统计代码
Jul 04 #PHP
PHP轻量级数据库操作类Medoo增加、删除、修改、查询例子
Jul 04 #PHP
CodeIgniter安全相关设置汇总
Jul 03 #PHP
php使用pack处理二进制文件的方法
Jul 03 #PHP
You might like
PHP base64+gzinflate压缩编码和解码代码
2008/10/03 PHP
PHP设置图片文件上传大小的具体实现方法
2013/10/11 PHP
PHP实现找出有序数组中绝对值最小的数算法分析
2017/08/07 PHP
PHP vsprintf()函数格式化字符串操作原理解析
2020/07/14 PHP
判断是否输入完毕再激活提交按钮
2006/06/26 Javascript
用js将内容复制到剪贴板兼容浏览器
2014/03/18 Javascript
node.js中的console.assert方法使用说明
2014/12/10 Javascript
javascript实现unicode与ASCII相互转换的方法
2015/12/10 Javascript
jQuery实现点击表格单元格就可以编辑内容的方法【测试可用】
2016/08/01 Javascript
jquery中each循环的简单回滚操作
2017/05/05 jQuery
让你彻底掌握es6 Promise的八段代码
2017/07/26 Javascript
基于js 字符串indexof与search方法的区别(详解)
2017/12/04 Javascript
Node.js上传文件功能之服务端如何获取文件上传进度
2018/02/05 Javascript
vue自定义tap指令及tap事件的实现
2018/09/18 Javascript
vue2.0+SVG实现音乐播放圆形进度条组件
2019/09/21 Javascript
vue-router之解决addRoutes使用遇到的坑
2020/07/19 Javascript
three.js欧拉角和四元数的使用方法
2020/07/26 Javascript
vue select 获取value和lable操作
2020/08/28 Javascript
Python 比较两个数组的元素的异同方法
2017/08/17 Python
python中文件变化监控示例(watchdog)
2017/10/16 Python
numpy中的高维数组转置实例
2018/04/17 Python
Python使用matplotlib实现基础绘图功能示例
2018/07/03 Python
pandas重新生成索引的方法
2018/11/06 Python
Python 3.3实现计算两个日期间隔秒数/天数的方法示例
2019/01/07 Python
解决webdriver.Chrome()报错:Message:'chromedriver' executable needs to be in Path
2019/06/12 Python
django 模型字段设置默认值代码
2020/07/15 Python
一款基于css3和jquery实现的动画显示弹出层按钮教程
2015/01/04 HTML / CSS
移动web模拟客户端实现多方框输入密码效果【附代码】
2016/03/25 HTML / CSS
用HTML5中的Canvas结合公式绘制粒子运动的教程
2015/05/08 HTML / CSS
个人求职简历的自我评价范文
2013/10/09 职场文书
数控技术专业推荐信
2013/11/01 职场文书
四年大学生活的个人自我评价
2013/12/11 职场文书
离婚协议书范本样本
2014/08/19 职场文书
党支部党的群众路线对照检查材料
2014/09/24 职场文书
优秀班主任推荐材料
2014/12/17 职场文书
交通事故被告答辩状
2015/05/22 职场文书