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