2017-10-02 12 views
1

APIをスクレイプするようにリクエストすると、正しく読み込まれない場合があります。価格の代わりに-1を返します。スクリーニング複製するreuqestを繰り返す方法

私は-1を取得している限り、要求を繰り返すためにwhileループを作成しますが、重複要求のために最初の要求後にスパイダーが停止します。

私の質問は、どうやって重複したリクエストを処理するのですか?

コード例:心の中で裸

 is_checked = False 
    while(not is_checked): 
     response = yield scrapy.Request("https://api.bookscouter.com/v3/prices/sell/"+isbn+".json")    
     jsonresponse = loads(response.body) 
     sellPrice = jsonresponse['data']['Prices'][0]['Price'] 
     if sellPrice!=-1: 
      is_checked = True 
      yield {'SellPrice': sellPrice} 

私は、インラインリクエスト・ライブラリを使用しますが、それは解決策には関係ありません。

答えて

2

重複要求を強制的にスケジュールするには、Requestのコンストラクタにdont_filter=Trueを設定します。上記のあなたの例では、変更

response = yield scrapy.Request("https://api.bookscouter.com/v3/prices/sell/"+isbn+".json") 

response = yield scrapy.Request("https://api.bookscouter.com/v3/prices/sell/"+isbn+".json", dont_filter=True) 

関連する問題