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 xml文件操作实现代码(二)
Mar 20 PHP
php中取得URL的根域名的代码
Mar 23 PHP
PHP基础之运算符的使用方法
Apr 28 PHP
深入解析php中的foreach问题
Jun 30 PHP
2014过年倒计时示例
Jan 31 PHP
PHP实现自动对图片进行滚动显示的方法
Mar 12 PHP
php判断一个数组是否为有序的方法
Mar 27 PHP
PHP中strnatcmp()函数“自然排序算法”进行字符串比较用法分析(对比strcmp函数)
Jan 07 PHP
php实现中文转数字
Feb 18 PHP
golang与php实现计算两个经纬度之间距离的方法
Jul 22 PHP
phpstudy默认不支持64位php的解决方法
Feb 20 PHP
Laravel等框架模型关联的可用性浅析
Dec 15 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 大数据量及海量数据处理算法总结
2011/05/07 PHP
destoon出现验证码不显示时的紧急处理方法
2014/08/22 PHP
PHP获取客户端及服务器端IP的封装类
2016/07/21 PHP
laravel-admin select框默认选中的方法
2019/10/03 PHP
jquery 经典动画菜单效果代码
2010/01/26 Javascript
基于jquery的横向滚动条(滑动条)
2011/02/24 Javascript
关于jQuery中的end()使用方法
2011/07/10 Javascript
js时间日期和毫秒的相互转换
2013/02/22 Javascript
js 获取计算后的样式写法及注意事项
2013/02/25 Javascript
jQuery中parentsUntil()方法用法实例
2015/01/07 Javascript
Javascript中数组方法汇总(推荐)
2015/04/01 Javascript
JS实现的系统调色板完整实例
2016/12/21 Javascript
jquery submit()不能提交表单的解决方法
2017/04/24 jQuery
解决React Native端口号修改的方法
2017/07/28 Javascript
WebStorm ES6 语法支持设置&babel使用及自动编译(详解)
2017/09/08 Javascript
Vue+ElementUI实现表单动态渲染、可视化配置的方法
2018/03/07 Javascript
详解多页应用 Webpack4 配置优化与踩坑记录
2018/10/16 Javascript
vue项目搭建以及全家桶的使用详细教程(小结)
2018/12/19 Javascript
Easyui 去除jquery-easui tab页div自带滚动条的方法
2019/05/10 jQuery
微信小程序tabBar 返回tabBar不刷新页面
2019/07/25 Javascript
js中!和!!的区别与用法
2020/05/09 Javascript
[02:07]2018DOTA2亚洲邀请赛主赛事第三日五佳镜头 fy极限反杀
2018/04/06 DOTA
深入解析Python编程中super关键字的用法
2016/06/24 Python
Python unittest单元测试框架总结
2018/09/08 Python
Python基础教程之if判断,while循环,循环嵌套
2019/04/25 Python
树莓派实现移动拍照
2019/06/22 Python
Python实现TCP通信的示例代码
2019/09/09 Python
推荐技术人员一款Python开源库(造数据神器)
2020/07/08 Python
纯CSS3制作漂亮带动画效果的主机价格表
2015/04/25 HTML / CSS
Html5 滚动穿透的方法
2019/05/13 HTML / CSS
Shopee越南:东南亚与台湾电商平台
2019/02/03 全球购物
Huda Beauty官方商店:化妆和美容产品
2020/09/05 全球购物
新闻传播专业求职信
2014/07/22 职场文书
学习十八大的心得体会
2014/09/01 职场文书
2016年秋季运动会加油稿
2015/12/21 职场文书
剑指Offer之Java算法习题精讲二叉树的构造和遍历
2022/03/21 Java/Android