1
我已经从这里抓取一段脚本来抓取一个网站,把它放在我的服务器上,它的工作原理。唯一的问题是,如果我尝试抓取任何高于4的深度,它就不起作用。我想知道是否由于服务器缺乏资源或代码本身。履带脚本php
<?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(净值:: ERR_EMPTY_RESPONSE):未知的错误。
“我尝试爬网设置爬虫超过4级*它不起作用*”这意味着什么? – Albireo 2011-04-11 09:04:48
我的意思是说,如果我将深度变量设置为4以上,它不会产生任何结果 – dbomb101 2011-04-11 09:53:28
超过默认time_limit后它会超时,并将此限制设置为较高值是危险的(几个进程永远不会结束并吸取内存轻松杀死一台服务器)。你最好使用像phpDig这样的真正的爬虫。 – Capsule 2011-04-11 12:53:02