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
推荐Discuz!5的PHP代码高亮显示与实现可运行代码
Mar 15 PHP
PHP URL路由类实例
Nov 12 PHP
php+mysql实现数据库随机重排实例
Oct 17 PHP
利用PHP函数计算中英文字符串长度的方法
Nov 11 PHP
PHP调试函数和日志记录函数分享
Jan 31 PHP
Yii遍历行下每列数据的方法
Oct 17 PHP
php删除一个路径下的所有文件夹和文件的方法
Feb 07 PHP
php处理多图上传压缩代码功能
Jun 13 PHP
php实现二叉树中和为某一值的路径方法
Oct 14 PHP
实例介绍PHP中zip_open()函数用法
Feb 15 PHP
php文件上传原理与实现方法详解
Dec 20 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计划任务之关闭浏览器后仍然继续执行的函数
2010/07/22 PHP
thinkphp中空模板与空模块的用法实例
2014/11/26 PHP
PHP多维数组元素操作类的方法
2016/11/14 PHP
laravel 实现用户登录注销并限制功能
2019/10/24 PHP
解决表单中第一个非隐藏的元素获得焦点的一个方案
2009/10/26 Javascript
Angularjs制作简单的路由功能demo
2015/04/14 Javascript
jQuery操作动态生成的内容的方法
2016/05/28 Javascript
EasyUI创建对话框的两种方式
2016/08/23 Javascript
JS用斜率判断鼠标进入DIV四个方向的方法
2016/11/07 Javascript
Bootstrap文件上传组件之bootstrap fileinput
2016/11/25 Javascript
JavaScript ES6中const、let与var的对比详解
2017/06/18 Javascript
Angular4学习笔记之新建项目的方法
2017/07/18 Javascript
使用vue-cli创建项目的图文教程(新手入门篇)
2018/05/02 Javascript
JS动画实现回调地狱promise的实例代码详解
2018/11/08 Javascript
Nodejs让异步变成同步的方法
2019/03/02 NodeJs
Vue 组件复用多次自定义参数操作
2020/07/27 Javascript
JS如何操作DOM基于表格动态展示数据
2020/10/15 Javascript
js前端对于大量数据的展示方式及处理方法
2020/12/02 Javascript
全面解析Vue中的$nextTick
2020/12/24 Vue.js
[54:58]完美世界DOTA2联赛PWL S2 LBZS vs Rebirth 第一场 11.25
2020/11/25 DOTA
Python遍历指定文件及文件夹的方法
2015/05/09 Python
python读取二进制mnist实例详解
2017/05/31 Python
Windows系统下多版本pip的共存问题详解
2017/10/10 Python
Python if语句知识点用法总结
2018/06/10 Python
Python之使用adb shell命令启动应用的方法详解
2019/01/07 Python
Python 运行 shell 获取输出结果的实例
2019/01/07 Python
python中的列表与元组的使用
2019/08/08 Python
PyTorch中 tensor.detach() 和 tensor.data 的区别详解
2020/01/06 Python
利用Python计算KS的实例详解
2020/03/03 Python
澳大利亚有机化妆品网上商店:The Well Store
2020/02/20 全球购物
简述安装Slackware Linux系统的过程
2012/01/12 面试题
趣味体育活动方案
2014/02/08 职场文书
党校毕业个人总结
2015/02/28 职场文书
2015年中秋晚会主持词
2015/07/01 职场文书
2016入党积极分子党校培训心得体会
2016/01/06 职场文书
phpQuery解析HTML乱码问题(补充官网未列出的乱码解决方案)
2021/04/01 PHP