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实现的遍历文件夹下所有文件,编辑删除
Jan 05 PHP
PHP禁止页面缓存的代码
Oct 23 PHP
php mssql扩展SQL查询中文字段名解决方法
Oct 15 PHP
PHP文件大小格式化函数合集
Mar 10 PHP
thinkPHP使用post方式查询时分页失效的解决方法
Dec 09 PHP
使用PHP如何实现高效安全的ftp服务器(二)
Dec 30 PHP
高质量PHP代码的50个实用技巧必备(下)
Jan 22 PHP
php文件上传类完整实例
May 14 PHP
PHP中in_array的隐式转换的解决方法
Mar 06 PHP
PHP中md5()函数的用法讲解
Mar 30 PHP
thinkPHP5框架实现多数据库连接,跨数据连接查询操作示例
May 29 PHP
YII2框架中查询生成器Query()的使用方法示例
Mar 18 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 excel类 phpExcel使用方法介绍
2010/08/21 PHP
修改php.ini以达到屏蔽错误信息并记录日志
2013/06/16 PHP
浅析使用Turck-mmcache编译来加速、优化PHP代码
2013/06/20 PHP
PHP实现的曲线统计图表示例
2016/11/10 PHP
如何取得中文输入的真实长度?
2006/06/24 Javascript
使用Modello编写JavaScript类
2006/12/22 Javascript
JavaScript面向对象设计二 构造函数模式
2011/12/20 Javascript
jquery星级插件、支持页面中多次使用
2012/03/25 Javascript
Javascript模块化编程(一)AMD规范(规范使用模块)
2013/01/17 Javascript
基于JavaScript实现 获取鼠标点击位置坐标的方法
2013/04/12 Javascript
基于jquery的9行js轻松实现tab控件示例
2013/10/12 Javascript
jQuery截取指定长度字符串代码
2014/08/21 Javascript
JS+CSS实现的蓝色table选项卡效果
2015/10/08 Javascript
使用JavaScript和CSS实现文本隔行换色的方法
2015/11/04 Javascript
jquery过滤特殊字符',防sql注入的实现方法
2016/08/17 Javascript
Javascript使用uploadify来实现多文件上传
2016/11/16 Javascript
Angular企业级开发——MVC之控制器详解
2017/02/20 Javascript
js实现文字跑马灯效果
2017/02/23 Javascript
你可能不知道的JSON.stringify()详解
2017/08/17 Javascript
JavaScript requestAnimationFrame动画详解
2017/09/14 Javascript
基于JavaScript+HTML5 实现打地鼠小游戏逻辑流程图文详解(附完整代码)
2017/11/02 Javascript
JS非行间样式获取函数的实例代码
2018/06/05 Javascript
浅谈JS对象添加getter与setter的5种方法
2018/06/09 Javascript
微信小程序select下拉框实现效果
2019/05/15 Javascript
js面向对象之实现淘宝放大镜
2020/01/15 Javascript
Vue向后台传数组数据,springboot接收vue传的数组数据实例
2020/11/12 Javascript
Python创建日历实例
2014/08/21 Python
通过python的matplotlib包将Tensorflow数据进行可视化的方法
2019/01/09 Python
Python3.4学习笔记之类型判断,异常处理,终止程序操作小结
2019/03/01 Python
python连接手机自动搜集蚂蚁森林能量的实现代码
2021/02/24 Python
物流专业大学应届生求职信
2013/11/03 职场文书
就职演讲稿范文
2014/05/19 职场文书
小学优秀教师先进事迹材料
2014/12/16 职场文书
指导教师推荐意见
2015/06/05 职场文书
Node-Red实现MySQL数据库连接的方法
2021/08/07 MySQL
Ruby序列化和持久化存储 Marshal和Pstore介绍
2022/04/18 Ruby