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 相关文章推荐
DedeCms模板安装/制作概述
Mar 11 PHP
php ajax 静态分页过程形式
Sep 02 PHP
PHP+jquery实时显示网站在线人数的方法
Jan 04 PHP
thinkphp3.2.3版本的数据库增删改查实现代码
Sep 22 PHP
PHP序列化操作方法分析
Sep 28 PHP
php及codeigniter使用session-cookie的方法(详解)
Apr 06 PHP
php实现与python进行socket通信的方法示例
Aug 30 PHP
php微信公众号开发之秒杀
Oct 20 PHP
Laravel如何创建服务器提供者实例代码
Apr 15 PHP
PHP+redis实现微博的拉模型案例详解
Jul 10 PHP
php+lottery.js实现九宫格抽奖功能
Jul 21 PHP
php统计数组不同元素的个数的实例方法
Sep 26 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
虹吸壶煮咖啡26个注意事项
2021/03/03 冲泡冲煮
PHP与MYSQL中UTF8编码的中文排序实例
2014/10/21 PHP
thinkphp5.1框架模板赋值与变量输出示例
2020/05/25 PHP
JavaScript 替换Html标签实现代码
2009/10/14 Javascript
js截取函数(indexOf,join等)
2010/09/01 Javascript
JQuery获取当前屏幕的高度宽度的实现代码
2011/07/12 Javascript
日期处理的js库(迷你版)--自建js库总结
2011/11/21 Javascript
jquery批量控制form禁用的代码
2013/08/06 Javascript
JS教程:window.location使用方法的区别介绍
2013/10/04 Javascript
jQuery制作的别致导航有阴影背景高亮模式窗口
2014/04/15 Javascript
javascript 获取函数形参个数
2014/07/31 Javascript
js+css实现导航效果实例
2015/02/10 Javascript
jquery+CSS实现的多级竖向展开树形TRee菜单效果
2015/08/24 Javascript
javascript中加var和不加var的区别 你真的懂吗
2016/01/06 Javascript
利用jQuery中的ajax分页实现代码
2016/02/25 Javascript
BootStrap下jQuery自动完成的样式调整
2016/05/30 Javascript
简单实现js选项卡切换效果
2017/02/09 Javascript
基于JavaScript实现移动端无限加载分页
2017/03/27 Javascript
angularjs自定义过滤器demo示例
2019/08/24 Javascript
Vue的data、computed、watch源码浅谈
2020/04/04 Javascript
如何在 Vue 表单中处理图片
2021/01/26 Vue.js
vue-router懒加载的3种方式汇总
2021/02/28 Vue.js
[58:09]Spirit vs NB Supermajor小组赛 A组败者组决赛 BO3 第三场 6.2
2018/06/03 DOTA
wxPython 入门教程
2008/10/07 Python
python实现忽略大小写对字符串列表排序的方法
2014/09/25 Python
详解Python的hasattr() getattr() setattr() 函数使用方法
2018/07/09 Python
Python  Django 母版和继承解析
2019/08/09 Python
wxPython实现文本框基础组件
2019/11/18 Python
Python计算IV值的示例讲解
2020/02/28 Python
css3实现冲击波效果的示例代码
2018/01/11 HTML / CSS
html5 canvas合成海报所遇问题及解决方案总结
2017/08/03 HTML / CSS
包装类的功能、种类、常用方法
2012/01/27 面试题
会议邀请函范文
2014/01/09 职场文书
2015年护士节活动总结
2015/02/10 职场文书
2015关于重阳节的演讲稿
2015/03/20 职场文书
工作失职检讨书范文
2015/05/05 职场文书