【发布时间】:2014-11-18 11:15:39
【问题描述】:
我有一个函数:
public function getHeaders($url){
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, true);
curl_setopt($ch, CURLOPT_NOBODY, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_TIMEOUT, 10);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, false);
$x = curl_exec($ch);
curl_close($ch);
return (array) HTTP::parse_header_string($x) ;
}
当$url=http://www.google.com', i have header location:http://www.google.de/?gfe_rd=cr&ei=SOMEHASHGOESHERE`
再次加载它并得到相同的结果,但是现在“SOMEHASHGOESHERE”是另一个。
我的任务是开发网络爬虫。我知道如何做它的基本逻辑。但几乎没有细微差别。其中之一是:如果请求的 url 发送到它的标题“位置”并尝试重定向,我的蜘蛛必须做什么?什么行为模型必须控制我的蜘蛛不可能将其放入无限重定向循环?
(如何识别像http://www.google.de/?gfe_rd=cr&ei=SOMEHASHGOESHERE 这样通常用于循环重定向的类似网址,并让我的蜘蛛理解忽略此类链接)
【问题讨论】:
-
我不关注。您是在寻找特定于谷歌的答案还是一般的答案?
-
既然您似乎在寻求通用解决方案,那么设置
CURLOPT_MAXREDIRS有什么问题? -
没问题,我几个小时前才看到。谢谢,但我已经用递归调用限制解决了我的函数))
标签: php web-crawler url-redirection