php抓取网页程序(PHP的CURL正常抓取页面程序:如果你抓取到的是302状态)
优采云 发布时间: 2022-01-06 23:00php抓取网页程序(PHP的CURL正常抓取页面程序:如果你抓取到的是302状态)
PHP的CURL正常抓取页面程序如下:
$url = 'http://www.baidu.com'; $ch = curl_init(); curl_setopt($ch, CURLOPT_U来源gao@.dai.ma.com搞@^&[email protected]/* */RL, $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”是错误的。