基本上我正在尝试从给定的URL解析IMDB ID。尝试进行循环以更改页码并继续抓取IMDB TT。
我期望变量$ page增加1,所以$ url会改变,每个循环中的foreach函数将收到一个新的url并再次开始抓取。
但问题是:循环只解析一页无限次,页码不增加1。
$url = 'http://www.imdb.com/search/title?genres=animation&page='.$page.''; # this URL
for ($page = 1; $page <= 5 ; $page++) {
foreach((new DOMXpath(@DOMDocument::loadHTMLFile($url)))->query($expr) as $obj)
preg_match($regex, $obj->value, $matches)
&& $ids[$matches[$match]] = 0;
;
$ids = array_keys($ids);
print implode("<br /> ", $ids);
}
您可以尝试这样的方法,将$ i <= num更改为您希望循环的每个页面的数量。
for( $i= 1 ; $i <= 165 ; $i++ ){
$url = 'http://www.imdb.com/search/title?genres=animation&page='.$i.'';
// some code here
sleep(2);
}
更新(没有欺骗):
<?php
for( $i= 1 ; $i <= 5 ; $i++ ){
$url = "http://www.imdb.com/search/title?genres=animation&page=$i";
$page = file_get_contents($url);
preg_match_all("/id=\"sb_(tt\d{7})/", $page, $idinfo, PREG_SET_ORDER);
foreach($idinfo as $idnumber){
$idnumber = $idnumber[1];
echo $idnumber.'<br>';
}}
?>
您可以考虑在循环之间进行睡眠作为礼貌措施,即睡眠(2);这会让它睡2秒。