如何使循环更改URL

问题描述 投票:0回答:1

基本上我正在尝试从给定的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);

}

示例:http://surveygun.com/tt.php

php regex loops for-loop
1个回答
0
投票

您可以尝试这样的方法,将$ 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秒。

© www.soinside.com 2019 - 2024. All rights reserved.