2011-10-23 20 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

は、ここに私のクローラスクリプトです。

1つの方法は、次のページへのリンクを見つけて、そのリンクに従うことです。それは正規表現で非常に簡単に行うことができます。

別の方法として、単一のサイトをクロールする場合は、ページネーションのURL構造を把握してから、コメントがなくなるまで段階的にページをスキャンします。

+0

私は自分のurl-structureを見つけました。url start = 0はちょうどfxでなければなりません。 0-24とfxのアプリが必要な場合はstart = 0。私が25-48の間でアプリを望むなら、start = 24。しかし、私は自分のスクリプトをどのように作って、現在のページに他のアプリがなくても次のページに行くようにしているのを知ることはできません。 –

+0

よかった。特定のページのhtmlに依存するので汎用ソリューションを提供するのは少し難しいですが、(1)ただし、最初に接続するURLを定義してください(2)whileループでURLに接続し、 3)何かにマッチしない場合は、何かにマッチすればループ(4)から抜け出し、一致したもので何かを行い、新しい宛先(例:example.com?start = 24)にURLを設定する –

+0

ありがとう私は解決策を見つけました。私はそこにいくつのページがあるかを調べて、forループを作成します。最大ページ数に設定されています。これは最高のソリューションか何かを知っていませんが、私は動作します:) –

関連する問題