我试图抓住所有链接,然后转到下一页,直到页面结束。 我只是继续得到一个循环。我想我只是茫然而且希望我今天能再次得到一些帮助。
function getLinks($URL) {
$html = file_get_contents($URL);
$dom = new simple_html_dom();
$dom -> load($html);
foreach ($dom->find('a[class=item_description]') as $href){
$url = $href->href;
echo $url;
}
if ($nextPage = $dom->find("a[class='paginationNumberStyle page_arrows']", 0)){
$nextPageURL = 'http://www.homedepot.com'.$nextPage->getAttribute('data-url');
$dom -> clear();
unset($dom);
getLinks($nextPageURL);
} else {
echo "\nEND";
$dom -> clear();
unset($dom);
}
}
答案 0 :(得分:0)
在您的代码中,您永远不会跟踪您去过的地方。
假设您从第A页开始:
此过程将无限期重复,因为您最终会反复抓取相同的网页。您需要保留已抓取的网页列表,如果您已抓取该网页,则需要跳过该网页。
另请注意,它可能不是一个简单的循环。
不太熟悉PHP,但有点像:
$arr[$url] = true; // Tell it that we know the url
if (array_key_exists($url, $arr)) {
// check if the url exists in the hash
}
答案 1 :(得分:0)
问题是您正在关注之前的箭头以及下一个箭头。您的css选择器需要进行调整以解决此问题。