여기 웹 사이트를 크롤링하기 위해 여기 스크립트를 가져 와서 내 서버에 올려 놓으면 작동합니다. 유일한 문제는 내가 시도하고 크롤링하면 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
깊이 변수를 4 이상으로 설정하면 결과가 생성되지 않는다고 말했습니다. – dbomb101
기본 time_limit를 초과 한 후에는 시간 초과가 발생하고이 제한을 더 높은 값으로 설정하면 위험합니다 (여러 프로세스가 끝나지 않고 메모리를 빠져 나올 수 있습니다. 쉽게 서버를 죽인다). phpDig와 같은 실제 크롤러를 사용하는 것이 좋습니다. – Capsule