PHP curl实现抓取302跳转后页面的示例
2015-01-24信息快讯网
这篇文章主要介绍了PHP curl实现抓取302跳转后页面的示例,主要是对CURLOPT_CUSTOMREQUEST参数的运用,需要的朋友可以参考下
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”是不正确的。
thinkphp四种url访问方式详解
thinkphp的URL路由规则与配置实例
php 伪造ip以及url来路信息方法汇总
浅谈ThinkPHP的URL重写
php采用curl实现伪造IP来源的方法
php中current、next与reset函数用法实例
PHP基于CURL进行POST数据上传实例
php中file_get_contents与curl性能比较分析
php采用file_get_contents代替使用curl实例
php采用curl模仿登录人人网发布动态的方法
PHP临时文件的安全性分析
PHP不用递归遍历目录下所有文件的代码
PHP中使用CURL模拟登录并获取数据实例
php防止伪造的数据从URL提交方法
编译PHP报错configure error Cannot find libmysqlclient under usr的解决方法
PHP执行Curl时报错提示CURL ERROR: Recv failure: Connection reset by peer的解决方法
php采用curl访问域名返回405 method not allowed提示的解决方法
PHP使用DOMDocument类生成HTML实例(包含常见标签元素)
Discuz批量替换帖子内容的方法(使用SQL更新数据库)
ThinkPHP的URL重写问题
PHP扩展CURL的用法详解
PHP函数分享之curl方式取得数据、模拟登陆、POST数据