2016-12-18 5 views
1

「もっと見る」ボタンで数字を取得するためにウェブページを掻き集めることを目的とするpythonスクリプトをビルドする必要があります。Python:別のものを掻き取るために使用される情報を取得するためにページを掻き取る方法、など?

この番号は、データ+番号を含むJSONを返すURLを要求するパラメータとして使用されます。この最後の数値は、データ+数値などを含むJSONを返すURLを要求するパラメータとして使用されます。プロセスは、JSONが空のデータ+数値を返すまで続きます。データが空の場合、スクレーパは停止する必要があります。

私はScrapyを使用しましたが、これは機能しません。 Scrapyは非同期で、私の場合に基づいて、私は次の情報を与えるために最初のJSON結果を待つ必要があるので、2番目のURLを掻き取ることができます。

私はPythonライブラリとして使用することをお勧めしますか?私はセレンが仕事をしているが、それはスクレイピーよりずっと遅いことを読んだ。

答えて

3

Scrapyの非同期動作は、特定の時間に複数のURLをスクラップすると最もよく見られます。この場合、新しいリクエストは、前のリクエストを解析した後にのみエンキューするので、問題ではありません。

JSONレスポンスの正確な構造がわからないので、datanumberという2つのキーがあるとします。あなたはこのような解析方法でScrapyスパイダーを書くことができます::

def parse(self, response): 
    result = json.loads(response.body) 
    # do something with the data 

    # request next page 
    if result['data']: 
     next_url = ... # construct URL using result['number'] 
     yield Request(next_url) 
関連する問題