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 相关文章推荐
PHP脚本数据库功能详解(下)
Oct 09 PHP
PHP数据缓存技术
Feb 14 PHP
使用HMAC-SHA1签名方法详解
Jun 26 PHP
(PHP实现)只使用++运算实现加法,减法,乘法,除法
Jun 27 PHP
php时间戳转换的示例
Mar 31 PHP
Yii2中SqlDataProvider用法示例
Sep 22 PHP
PHP数组操作实例分析【添加,删除,计算,反转,排序,查找等】
Dec 24 PHP
PHP正则+Snoopy抓取框架实现的抓取淘宝店信誉功能实例
May 17 PHP
PHP实现求连续子数组最大和问题2种解决方法
Dec 26 PHP
PHP实现的简单路由和类自动加载功能
Mar 13 PHP
PHP中用Trait封装单例模式的实现
Dec 18 PHP
phpStorm2020 注册码
Sep 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递归json类实例
2014/12/02 PHP
十幅图告诉你什么是PHP引用
2015/02/22 PHP
php版微信公众平台开发之验证步骤实例详解
2016/09/23 PHP
php实现推荐功能的简单实例
2019/09/29 PHP
JavaScript语句可以不以;结尾的烦恼
2007/03/08 Javascript
jquery插件jbox使用iframe关闭问题
2009/02/09 Javascript
自己的js工具 Cookie 封装
2009/08/21 Javascript
js对象的构造和继承实现代码
2010/12/05 Javascript
常见效果实现之返回顶部(结合淡入、淡出、减速滚动)
2012/01/04 Javascript
js 验证密码强弱的小例子
2013/03/21 Javascript
JS的参数传递示例介绍
2014/02/08 Javascript
分享一个自己动手写的jQuery分页插件
2014/08/28 Javascript
微信浏览器内置JavaScript对象WeixinJSBridge使用实例
2015/05/25 Javascript
JavaScript中Textarea滚动条不能拖动的解决方法
2015/12/15 Javascript
JavaScript操作选择对象的简单实例
2016/05/16 Javascript
微信小程序 条件渲染详解
2016/10/09 Javascript
Vuex模块化实现待办事项的状态管理
2017/03/15 Javascript
基于Vue.js 2.0实现百度搜索框效果
2020/12/28 Javascript
clipboard在vue中的使用的方法示例
2018/10/19 Javascript
js自定义input文件上传样式
2018/10/26 Javascript
JS快速实现简单计算器
2020/04/08 Javascript
JS实现悬浮球只在一侧滑动并且是横屏状态下
2020/08/19 Javascript
js实现可爱的气泡特效
2020/09/05 Javascript
Vue中使用JsonView来展示Json树的实例代码
2020/11/16 Javascript
pycharm远程linux开发和调试代码的方法
2018/07/17 Python
Django框架安装方法图文详解
2019/11/04 Python
使用python实现学生信息管理系统
2021/02/25 Python
HTML5实现应用程序缓存(Application Cache)
2020/06/16 HTML / CSS
群胜软件Java笔试题
2012/09/29 面试题
基于Python 函数和方法的区别说明
2021/03/24 Python
乳制品整治工作方案
2014/05/29 职场文书
抵押贷款承诺书
2014/05/30 职场文书
小学生自我评价100字(15篇)
2014/09/18 职场文书
初三化学教学反思
2016/02/22 职场文书
go web 预防跨站脚本的实现方式
2021/06/11 Golang
MySQL系列之二 多实例配置
2021/07/02 MySQL