2011-10-23 28 views
-3

我做了一个履带,但我不明白我怎么可以通过分页,可有人请帮助我,谢谢。如何通过爬行器分页?

这里是我的履带式脚本:

 

    if(!$fp = fopen("https://market.android.com/details?id=apps_topselling_paid&cat=LIBRARIES_AND_DEMO&start=0&num=24" ,"r")) { 
     return false; 
    } 
    $content = ""; 

    while(!feof($fp)) { 
     $content .= fgets($fp, 1024); 
    } 
    fclose($fp); 

    if (!preg_match('/error-section/i', $content)) { 
     preg_match_all("/id=([^/i", $content, $matches, PREG_SET_ORDER); 

     $i=1; 
     foreach ($matches as $val) { 

      $link = $val[1]; 

      if(!$fps = fopen("https://market.android.com/details?id=". $link ,"r")) { 
      return false; 
      } 
      $content_app = ""; 

      while(!feof($fps)) { 
      $content_app .= fgets($fps, 1024); 
      } 
      fclose($fps); 

      preg_match("/([^/i", $content_app, $regs); 
      echo $regs[1]. "
; } }else{ echo 'Error page not found!'; }
+0

你是什么意思的“分页”?需要更多信息... –

+0

@Pekka - 我非常确定OP希望知道他们如何处理跨越多页的内容。更多的信息会很好,但是我认为这样做的技术并不需要更多的信息。 –

+0

@Jared我认为它确实 - 毕竟,用于分页的HTML无法预测(或者整个可能完全基于Ajax)。我想一些更多的信息是必要的。 (Downvote不是我的虽然) –

回答

0

我认为分页类似评论的博客分页的东西。

一种方法是找到到下一页的链接,然后按照该链接。它可以用一个正则表达式很容易地完成。

另一种方法是,如果您要抓取单个网站,则需要找出分页的url结构,然后逐步扫描页面,直到没有更多评论为止。

+0

好的,我发现它们的url结构,在url start = 0中只是fx。如果我想要0-24和fx的应用程序,start = 0。开始= 24,如果我想要25-48之间的应用程序。但我无法弄清楚我是如何制作我的脚本的,所以我只是在当前页面上没有更多应用程序时才转到下一页,您能帮助吗? –

+0

好的。提供一个通用的解决方案有点难,因为它取决于特定页面的html,但是(1),但首先定义一个你想连接的url(2),在whileloop连接到url并进行匹配3)如果你不匹配任何东西,跳出循环(4),如果你匹配的东西,然后做匹配的东西,并将网址设置为新的目的地(如example.com?start = 24) –

+0

谢谢为了帮助我找到了解决方案。我发现有多少页,然后我做了一个for循环,设置为最大页数,我不知道这是最好的解决方案或什么,但我工作:) –