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入门学习知识点八 PHP中for循环基本应用之九九乘法口绝表
Jul 14 PHP
php用header函数实现301跳转代码实例
Nov 25 PHP
ThinkPHP3.1新特性之动态设置自动完成及自动验证示例代码
Jun 23 PHP
PHP中file_exists函数不支持中文名的解决方法
Jul 26 PHP
php中__destruct与register_shutdown_function执行的先后顺序问题
Oct 17 PHP
PHP实现获取域名的方法小结
Nov 05 PHP
PHP中mysql_field_type()函数用法
Nov 24 PHP
一个简单的php MVC留言本实例代码(必看篇)
Sep 22 PHP
PHP实现mysqli批量执行多条语句的方法示例
Jul 22 PHP
基于php编程规范(详解)
Aug 17 PHP
php设计模式之装饰模式应用案例详解
Jun 17 PHP
Laravel 对某一列进行筛选然后求和sum()的例子
Oct 10 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使用指定编码导出mysql数据到csv文件的方法
2015/03/31 PHP
PHP+Mysql无刷新问答评论系统(源码)
2016/12/20 PHP
详解PHP版本兼容之openssl调用参数
2018/07/25 PHP
PHP的mysqli_sqlstate()函数讲解
2019/01/23 PHP
php生成word并下载代码实例
2019/03/15 PHP
javascript对象的property和prototype是这样一种关系
2007/03/24 Javascript
js复制网页内容并兼容各主流浏览器的代码
2013/12/17 Javascript
使用angular写一个hello world
2015/01/23 Javascript
jQuery 回调函数(callback)的使用和基础
2015/02/26 Javascript
浅谈JavaScript 覆盖原型以及更改原型
2016/08/31 Javascript
详解闭包解决jQuery中AJAX的外部变量问题
2017/02/22 Javascript
第一次记录Bootstrap table学习笔记(1)
2017/05/18 Javascript
关于vue.js v-bind 的一些理解和思考
2017/06/06 Javascript
vue-cli 使用vue-bus来全局控制的实例讲解
2018/09/15 Javascript
vue项目动态设置页面title及是否缓存页面的问题
2018/11/08 Javascript
layui+jquery支持IE8的表格分页方法
2019/09/28 jQuery
vue+render+jsx实现可编辑动态多级表头table的实例代码
2020/04/01 Javascript
9个JavaScript日常开发小技巧
2020/10/06 Javascript
Javascript中window.name属性详解
2020/11/19 Javascript
Python中尝试多线程编程的一个简明例子
2015/04/07 Python
Python中使用hashlib模块处理算法的教程
2015/04/28 Python
Python字符串格式化
2015/06/15 Python
Centos7 Python3下安装scrapy的详细步骤
2018/03/15 Python
python中文编码与json中文输出问题详解
2018/08/24 Python
python3.6 如何将list存入txt后再读出list的方法
2019/07/02 Python
使用 python pyautogui实现鼠标键盘控制功能
2019/08/04 Python
python3 dict ndarray 存成json,并保留原数据精度的实例
2019/12/06 Python
Pytorch 的损失函数Loss function使用详解
2020/01/02 Python
中国领先的专业演出票务网:永乐票务
2016/08/29 全球购物
北美Newegg打造的全球尖货海购平台:tt海购
2018/09/28 全球购物
Sandro法国官网:法国成衣品牌
2019/08/28 全球购物
美国排名第一的泳池用品直接来源:In The Swim
2019/09/23 全球购物
计算机专业推荐信范文
2013/11/20 职场文书
文明餐桌行动实施方案
2014/02/19 职场文书
员工试用期自我评价
2014/09/18 职场文书
如何使用php生成zip压缩包
2021/04/21 PHP