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 相关文章推荐
PHP4(windows版本)中的COM函数
Oct 09 PHP
php intval的测试代码发现问题
Jul 27 PHP
PHP 截取字符串函数整理(支持gb2312和utf-8)
Feb 16 PHP
让Nginx支持ThinkPHP的URL重写和PATHINFO的方法分享
Aug 08 PHP
如何使用php判断服务器是否是HTTPS连接
Jul 05 PHP
php上传文件,创建递归目录的实例代码
Oct 18 PHP
浅谈discuz密码加密的方式
May 22 PHP
Yii2单元测试用法示例
Nov 12 PHP
PHP实现文字写入图片功能
Feb 18 PHP
详解将数据从Laravel传送到vue的四种方式
Oct 16 PHP
PHP实现微信公众号验证Token的示例代码
Dec 16 PHP
PHP获取学生成绩的方法
Nov 17 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持久连接mysql_pconnect()函数使用介绍
2012/02/05 PHP
PHP判断是否连接上网络的方法
2015/07/01 PHP
PHP+HTML+JavaScript+Css实现简单爬虫开发
2016/03/28 PHP
php中引用&的用法分析【变量引用,函数引用,对象引用】
2016/12/12 PHP
PHP基于ICU扩展intl快速实现汉字转拼音及按拼音首字母分组排序的方法
2017/05/03 PHP
JavaScript对象和字串之间的转换实例探讨
2013/04/21 Javascript
基于jQuery实现顶部导航栏功能
2016/12/27 Javascript
微信小程序 Button 组件详解及简单实例
2017/01/10 Javascript
简单的vue-resourse获取json并应用到模板示例
2017/02/10 Javascript
Vue函数式组件-你值得拥有
2019/05/09 Javascript
vue实现一拉到底的滑动验证
2019/07/25 Javascript
Typescript的三种运行方式(小结)
2019/09/18 Javascript
使用vue-router切换页面时实现设置过渡动画
2019/10/31 Javascript
微信小程序如何通过用户授权获取手机号(getPhoneNumber)
2020/01/21 Javascript
js HTML DOM EventListener功能与用法实例分析
2020/04/27 Javascript
学习python类方法与对象方法
2016/03/15 Python
python通过pip更新所有已安装的包实现方法
2017/05/19 Python
python for循环remove同一个list过程解析
2019/08/14 Python
pytorch中的embedding词向量的使用方法
2019/08/18 Python
python rolling regression. 使用 Python 实现滚动回归操作
2020/06/08 Python
python+openCV对视频进行截取的实现
2020/11/27 Python
HTML5的Geolocation地理位置定位API使用教程
2016/05/12 HTML / CSS
HTML5的结构和语义(2):结构
2008/10/17 HTML / CSS
AmazeUI中模态框的实现
2020/08/19 HTML / CSS
美国木工工具和用品商店:Woodcraft
2019/10/30 全球购物
合同协议书格式
2014/04/18 职场文书
欢度春节标语
2014/07/01 职场文书
德育标兵事迹材料
2014/08/24 职场文书
教师工作自我鉴定范文
2014/09/14 职场文书
2014年政风行风评议工作总结
2014/10/21 职场文书
2014年检验员工作总结
2014/11/19 职场文书
会议通知范文
2015/04/15 职场文书
同意报考证明
2015/06/17 职场文书
Oracle更换为MySQL遇到的问题及解决
2021/05/21 Oracle
golang定时器
2022/04/14 Golang
使用vuex-persistedstate本地存储vuex
2022/04/29 Vue.js