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 操作excel文件的方法小结
Dec 31 PHP
PHP5中Cookie与 Session使用详解
Apr 30 PHP
php中filter函数验证、过滤用户输入的数据
Jan 13 PHP
yii框架配置默认controller和action示例
Apr 30 PHP
php按百分比生成缩略图的代码分享
May 10 PHP
PHP实用函数分享之去除多余的0
Feb 06 PHP
10条php编程小技巧
Jul 07 PHP
PHP实现的oracle分页函数实例
Jan 25 PHP
thinkphp关于简单的权限判定方法
Apr 03 PHP
php修改数组键名的方法示例
Apr 15 PHP
PHP实现基于栈的后缀表达式求值功能
Nov 10 PHP
php设计模式之正面模式实例分析【星际争霸游戏案例】
Mar 24 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
Warning: session_destroy() : Trying to destroy uninitialized sessionq错误
2011/06/16 PHP
如何使用PHP计算上一个月的今天
2013/05/23 PHP
php通过ajax实现双击table修改内容
2014/04/28 PHP
destoon之一键登录设置
2014/06/21 PHP
thinkphp浏览历史功能实现方法
2014/10/29 PHP
javascript实现仿银行密码输入框效果的代码
2007/12/13 Javascript
XHTML下,JS浮动代码失效的问题
2009/11/12 Javascript
一行代码告别document.getElementById
2012/06/01 Javascript
js 控制图片大小核心讲解
2013/10/09 Javascript
跟我学习javascript的闭包
2015/11/16 Javascript
JavaScript统计字符串中每个字符出现次数完整实例
2016/01/28 Javascript
Zabbix添加Node.js监控的方法
2016/10/20 Javascript
jQuery 常见小例汇总
2016/12/14 Javascript
JavaScript制作简易计算器(不用eval)
2017/02/05 Javascript
angularjs的select使用及默认选中设置
2017/04/08 Javascript
关于TypeScript模块导入的那些事
2018/06/12 Javascript
vue 中引用gojs绘制E-R图的方法示例
2018/08/24 Javascript
详解vuex 渐进式教程实例代码
2018/11/27 Javascript
vue项目中axios请求网络接口封装的示例代码
2018/12/18 Javascript
Python求两个list的差集、交集与并集的方法
2014/11/01 Python
Python多线程编程(五):死锁的形成
2015/04/05 Python
Python对列表排序的方法实例分析
2015/05/16 Python
Python在Console下显示文本进度条的方法
2016/02/14 Python
Python 正则表达式入门(初级篇)
2016/12/07 Python
详解通过API管理或定制开发ECS实例
2018/09/30 Python
Python3.5以上版本lxml导入etree报错的解决方案
2019/06/26 Python
python跨文件使用全局变量的实现
2020/11/17 Python
如何通过Python实现RabbitMQ延迟队列
2020/11/28 Python
欧迪办公美国官网:Office Depot
2016/08/22 全球购物
Structs界面控制层技术
2013/10/11 面试题
医药专业推荐信
2013/11/15 职场文书
商务邀请函范文
2014/01/14 职场文书
实习推荐信
2014/05/10 职场文书
2014年销售工作总结与计划
2014/12/01 职场文书
王亚平太空授课观后感
2015/06/12 职场文书
javascript遍历对象的五种方式实例代码
2021/10/24 Javascript