Ich kann Spider-Einstellungen in Parse-Methode nicht ändern. Aber es muss definitiv ein Weg sein.Scrapy. Wie ändere ich die Spider-Einstellungen nach dem Crawlen?
Zum Beispiel:
class SomeSpider(BaseSpider): name = 'mySpider' allowed_domains = ['example.com'] start_urls = ['http://example.com'] settings.overrides['ITEM_PIPELINES'] = ['myproject.pipelines.FirstPipeline'] print settings['ITEM_PIPELINES'][0] #printed 'myproject.pipelines.FirstPipeline' def parse(self, response): #...some code settings.overrides['ITEM_PIPELINES'] = ['myproject.pipelines.SecondPipeline'] print settings['ITEM_PIPELINES'][0] # printed 'myproject.pipelines.SecondPipeline' item = Myitem() item['mame'] = 'Name for SecondPipeline'
Aber! Artikel wird von FirstPipeline bearbeitet. Neue ITEM_PIPELINES-Parameter funktionieren nicht. Wie kann ich die Einstellungen nach dem Crawlen ändern? Danke im Voraus!
Pipelines initialisiert und auf dem Motorstart aktiviert. Ich bin mir nicht sicher, ob Sie das während der Ausführung ändern können. Sie könnten jedoch beide Pipelines beim Start aktivieren und eine Logik in der Pipeline hinzufügen, die nur dann ein Element verarbeitet, wenn es eine bestimmte Bedingung erfüllt. –
Ja, das ist meine letzte Option. Danke für deine Antwort. Ich denke, dass etwas wie Spinnensignale helfen kann, aber es ist ziemlich schwierig. – fcmax
Sicher können Sie verschiedene Funktionen an verschiedene Spinnensignale anhängen. Sie möchten Handler an Signale in einer Nebenstelle anhängen. Siehe auch: http://doc.scrapy.org/en/latest/topics/extensions.html#writing-your-own-extension –