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 相关文章推荐
MySQL中create table语句的基本语法是
Jan 15 PHP
php引用返回与取消引用的详解
Jun 08 PHP
浅析php中jsonp的跨域实例
Jun 21 PHP
无刷新动态加载数据 滚动条加载适合评论等页面
Oct 16 PHP
PHP中spl_autoload_register函数的用法总结
Nov 07 PHP
PHP URL参数获取方式的四种例子
Feb 28 PHP
PHP中实现crontab代码分享
Mar 26 PHP
分享自定义的几个PHP功能函数
Apr 15 PHP
php中header设置常见文件类型的content-type
Jun 23 PHP
浅谈COOKIE和SESSION区别
Jul 19 PHP
php中switch语句用法详解
Aug 17 PHP
laravel5环境隐藏index.php后缀(apache)的方法
Oct 12 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
德生S2000电路分析
2021/03/02 无线电
php cURL和Rolling cURL并发方式比较
2013/10/30 PHP
谈谈你对Zend SAPIs(Zend SAPI Internals)的理解
2015/11/10 PHP
利用php获得flv视频长度的实例代码
2017/10/26 PHP
用php定义一个数组最简单的方法
2019/10/04 PHP
laravel 解决多库下的DB::transaction()事务失效问题
2019/10/21 PHP
JavaScript实现将数组中所有元素连接成一个字符串的方法
2015/04/06 Javascript
jQuery动态星级评分效果实现方法
2015/08/06 Javascript
javascript实现任务栏消息提示的简单实例
2016/05/31 Javascript
解决前端跨域问题方案汇总
2016/11/20 Javascript
Javascript 实现放大镜效果实例详解
2016/12/03 Javascript
js多个物体运动功能实例分析
2016/12/20 Javascript
vue实现消息的无缝滚动效果的示例代码
2017/12/05 Javascript
node前端模板引擎Jade之标签的基本写法
2018/05/11 Javascript
Vue不能观察到数组length的变化
2018/06/08 Javascript
使用js在layui中实现上传图片压缩
2019/06/18 Javascript
jQuery实现提交表单时不提交隐藏div中input的方法
2019/10/08 jQuery
[02:03]DOTA2亚洲邀请赛 HGT战队出场宣传片
2015/02/07 DOTA
Python查看多台服务器进程的脚本分享
2014/06/11 Python
python实现根据用户输入从电影网站获取影片信息的方法
2015/04/07 Python
Python数据类型学习笔记
2016/01/13 Python
Python使用修饰器执行函数的参数检查功能示例
2017/09/26 Python
详解Python打包分发工具setuptools
2019/08/05 Python
Python中PyQt5/PySide2的按钮控件使用实例
2019/08/17 Python
利用PyCharm操作Github(仓库新建、更新,代码回滚)
2019/12/18 Python
python:解析requests返回的response(json格式)说明
2020/04/30 Python
Python如何在循环内使用list.remove()
2020/06/01 Python
python 爬虫爬取京东ps4售卖情况
2020/12/18 Python
Perfume’s Club英国官网:购买香水和护肤品
2019/11/02 全球购物
互联网创业计划书的书写步骤
2014/01/28 职场文书
学习党的群众路线教育实践活动心得体会
2014/03/01 职场文书
保护环境倡议书500字
2014/05/19 职场文书
南京市纪委监察局整改方案
2014/09/16 职场文书
2016年中学端午节主题活动总结
2016/04/01 职场文书
解决Go gorm踩过的坑
2021/04/30 Golang
关于MySQL中的 like操作符详情
2021/11/17 MySQL