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 split汉字
Jun 05 PHP
深入解析php之apc
May 15 PHP
浅析get与post的一些特殊情况
Jul 28 PHP
php计划任务之ignore_user_abort函数实现方法
Jan 08 PHP
php根据指定位置和长度获得子字符串的方法
Mar 17 PHP
PHP中使用curl入门教程
Jul 02 PHP
详细解读PHP中接口的应用
Aug 12 PHP
PHP判断来访是搜索引擎蜘蛛还是普通用户的代码小结
Sep 14 PHP
简单谈谈PHP中的trait
Feb 25 PHP
Yii2.0多文件上传实例说明
Jul 24 PHP
tp5框架内使用tp3.2分页的方法分析
May 05 PHP
php微信小程序解包过程实例详解
Mar 31 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下通过POST还是GET来传值
2008/06/05 PHP
PHP保留两位小数并且四舍五入及不四舍五入的方法
2013/09/22 PHP
php从字符串创建函数的方法
2015/03/16 PHP
深入解析WordPress中加载模板的get_template_part函数
2016/01/11 PHP
php 输出json及显示json中的中文汉字详解及实例
2016/11/09 PHP
jquery 指南/入门基础
2007/11/30 Javascript
JS实现的省份级联实例代码
2013/06/24 Javascript
node.js中的fs.readlinkSync方法使用说明
2014/12/17 Javascript
使用jquery/js获取iframe父子级、同级获取元素的方法
2016/08/05 Javascript
vue.js学习笔记之绑定style样式和class列表
2016/10/31 Javascript
bootstrap modal弹出框的垂直居中
2016/12/14 Javascript
js数组去重的hash方法
2016/12/22 Javascript
jquery中用函数来设置css样式
2016/12/22 Javascript
jquery 正整数数字校验正则表达式
2017/01/10 Javascript
javascript常用的设计模式
2017/02/09 Javascript
原生js实现旋转木马轮播图效果
2017/02/27 Javascript
vue axios同步请求解决方案
2017/09/29 Javascript
npm 下载指定版本的组件方法
2018/05/17 Javascript
Vue监听一个数组id是否与另一个数组id相同的方法
2018/09/26 Javascript
EasyUI 数据表格datagrid列自适应内容宽度的实现
2019/07/18 Javascript
JavaScript使用localStorage存储数据
2019/09/25 Javascript
基于小程序请求接口wx.request封装的类axios请求
2020/07/02 Javascript
原生js拖拽功能制作滑动条实例代码
2021/02/05 Javascript
[40:27]完美世界DOTA2联赛PWL S3 PXG vs GXR 第一场 12.19
2020/12/24 DOTA
python fabric实现远程部署
2017/01/05 Python
python DataFrame 修改列的顺序实例
2018/04/10 Python
Python3.4学习笔记之类型判断,异常处理,终止程序操作小结
2019/03/01 Python
谈一谈HTML5本地存储技术
2016/03/02 HTML / CSS
生产部厂长助理职位说明书
2014/03/03 职场文书
安全生产月宣传标语
2014/10/06 职场文书
教师节寄语2015
2015/03/23 职场文书
2015年街道办事处工作总结
2015/05/22 职场文书
电影红河谷观后感
2015/06/11 职场文书
农村婚庆主持词
2015/06/29 职场文书
python opencv通过按键采集图片源码
2021/05/20 Python
教你使用Python获取QQ音乐某个歌手的歌单
2022/04/03 Python