Ich Parsing eine Liste von URLs, und ich möchte vermeiden, einige URL-Ergebnis unter der Bedingung einige seiner Wert zu speichern. Mein Code ist so etwas wie dieses:Scrapy: Wie verhindere ich eine Yield Anfrage mit einem bedingten Wert?
start_urls = [www.rootpage.com]
def parse(self,response):
item = CreatedItem()
url_list = response.xpath('somepath').extract()
for url in url_list:
request = scrapy.Request(item['url'],callback=self.parse_article)
request.meta['item'] = item
yield request
def parse_article(self,response):
item = response.meta['item']
item['parameterA'] = response.xpath('somepath').extract()
yield item
Jetzt möchte ich, dass im Falle item [ ‚ParameterA‘] folgt eine Bedingung, gibt es keine Notwendigkeit zu „yield Anforderung“ (so dass keine Einsparung für diese URL auftritt). Ich habe versucht, ein bedingter wie hinzufügen:
if item['parameterA'] == 0:
continue
else:
yield item
aber wie erwartet es nicht funktioniert, weil scrapy die Schleife wird fortgesetzt, noch bevor die Anforderung durchgeführt wird.
Warten Sie, aber die einzige Möglichkeit, den 'ParameterA' zu erhalten, besteht darin, eine Anfrage zu stellen? – alecxe
Ja, weil ich "sehen" muss, was unter dieser URL ist, entscheide ich, ob ich es speichere oder nicht. – Miguel