Ich habe folgendes Scrapy Parse-Methode:Scrapy - Condition Based kriechen
def parse(self, response):
item_loader = ItemLoader(item=MyItem(), response=response)
for url in response.xpath('//img/@src').extract():
item_loader.add_value('image_urls', response.urljoin(url))
yield item_loader.load_item()
# If item['images_matched'] == True:
# yield Request(links, callback=parse)
Dieser sendet die extrahierten Bild-URLs zu den ImagePipelines. Ich muss Scrapy zusätzliche Links von dieser Seite crawlen lassen, wenn eine bestimmte Bedingung erfüllt ist ... etwas wie ... die Prüfsumme der Bildinhalte ist eine Übereinstimmung für eine Liste von Hashes.
Mein Problem ist, dass ich weiß nicht, wie die Artikel zugreifen, sobald es in der ImagesPipeline und es ist bevölkert mit allen, die Daten fertig ist. Bedeutung item['images_matched']
wird nicht in der Parse-Methode, sondern die Pipelines gefüllt. Ich habe entdeckt, dass die folgende Zugabe nach yield
arbeitet: mit entweder den Zugriff auf den Artikel oder eine andere Herangehensweise an dieses
EDIT Hilfe brauchen.
Allerdings scheint dies wie unglaublich schlecht Codierung für mich als das Element dict kann manchmal ziemlich groß sein. Das nur zu überschreiten, um ein Attribut zu überprüfen, ist komisch. Gibt es einen besseren Weg?
Danke. Ich habe tatsächlich so etwas probiert, aber es hat nicht funktioniert. Nicht sicher, wo mein Fehler war, als ich diesen Code löschte. – Akustik