【发布时间】:2011-04-11 08:59:18
【问题描述】:
我从这里抓取了一段脚本来抓取一个网站,将它放在我的服务器上,它就可以工作了。唯一的问题是,如果我尝试将深度设置为 4 以上,则它不起作用。我想知道是因为服务器缺乏资源还是代码本身。
<?php
error_reporting(E_ALL);
function crawl_page($url, $depth)
{
static $seen = array();
if (isset($seen[$url]) || $depth === 0) {
return;
}
$seen[$url] = true;
$dom = new DOMDocument('1.0');
@$dom->loadHTMLFile($url);
$anchors = $dom->getElementsByTagName('a');
foreach ($anchors as $element) {
$href = $element->getAttribute('href');
if (0 !== strpos($href, 'http')) {
$href = rtrim($url, '/') . '/' . ltrim($href, '/');
}
crawl_page($href, $depth - 1);
}
echo "URL:",$url,PHP_EOL;
echo "<br/>";
}
crawl_page("http://www.mangastream.com/", 2);
?>
编辑:
我打开了脚本的错误报告,我得到的只是这个
错误 324 (net::ERR_EMPTY_RESPONSE):未知错误。
【问题讨论】:
-
"我尝试将爬虫设置为 4 级以上 它不起作用" 那意味着什么?
-
我的意思是说如果我将深度变量设置在 4 以上,它不会产生任何结果
-
超过默认时间限制后无论如何都会超时,并且将此限制设置为更高的值是危险的(几个进程永无止境并且吸内存很容易杀死服务器)。最好用phpDig之类的真正的爬虫。
标签: php web-crawler