2016-07-29 10 views
0

Ich bin ein wenig neu zu scrapy und ich bin an einem Punkt fest. Ich möchte eine Spinne neu starten, wenn sie geschlossen wird.Scrapy Crawl mehrere Spinnen anschließend

Was ich hier implementieren möchte, ist, dass ich URLs aus der Datenbank bekomme, schrieb ich meine Ansicht in einer Weise, dass die start_request, wenn ich eine "scrapy crawl xyz" Anfrage senden wird eine URL [nächste URL] erhalten unterscheidet sich von dem, was in der vorherigen Anforderung von der Datenbank übergeben wurde.

Das Problem ist, wenn es vier URLs in der Datenbank Ich muss "scrapy crawl xyz" 4 mal ausführen, aber ich möchte vermeiden, und ich versuche "scrapy crawl xyz" feuern, wenn die aktuelle "spider_closed" bekommen am Ende der Spinne genannt. Bitte helfen Sie

Antwort

0

Wenn Sie mehrere Spinnen in einem Skript crawlen möchten - wahrscheinlich möchten Sie die Spinnen aus einem Skript ausführen. Siehe official docummenation on how to do that

Um auf das Beispiel erweitern in der Dokumentation zur Verfügung gestellt, sollte Ihr das in etwa so aussehen:

process.crawl(MySpider) 
process.start() 
process.crawl(MySpider2) 
process.start() 
process.crawl(MySpider3) 
process.start() 
+0

Dank Granitosaurus getan tun, aber ich will nicht mehrere Spinne laufen, hier, was ich versuche um denselben Spider erneut auszuführen, wenn die Daten von der ersten URL gelöscht wurden – vrnair

+0

In diesem Fall müssen Sie nur das Attribut MySpider.start_urls aktualisieren, bevor Sie es zur Verarbeitung hinzufügen. Übrigens, warum nicht einfach mehrere URLs an start_requests übergeben, wenn die Spinne gestartet wird? – Granitosaurus

+0

Beim Übergeben mehrerer URLs werde ich vom Verbindungspeer und der "twisted.python.failure.failure-Klasse 'openssl.ssl.error'" zurückgesetzt, aber gleichzeitig kriege ich diese Crawlen einzeln nacheinander ohne Fehler – vrnair

0

Hallo Leute ich ein Problem auf meine Frage gefunden. Ich wollte den gleichen Scrapy-Befehl gleichzeitig ausführen. also was ich gemacht habe ist mein eigenes Kommando in linus erstellt und dann meinen scrapy crawl xyz in eine Schleife gelegt und es hat funktioniert.

!/Bin/bash

für i in seq 1 3 scrapy kriechen Taleo

Verwandte Themen