2017-10-02 3 views
1

lorsque j'envoie une requête pour gratter API parfois il ne se charge pas correctement et il me renvoie -1 au lieu du prix.scrapy comment répéter un dupliqué reuqest

Donc je mets une boucle while pour le faire répéter la requête tant que j'obtiens -1 mais l'araignée s'arrête après la première requête à cause de la demande en double. Donc, ma question est, comment puis-je le modifier pour traiter les demandes en double?

exemple de code:

 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} 

nu à l'esprit que j'utilise la bibliothèque de requêtes inline mais il ne concerne pas la solution.

Répondre

2

Pour forcer la planification de la requête en double, définissez dont_filter=True dans le constructeur Request. Dans votre exemple ci-dessus, changer

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)