5
我無法更改解析方法中的蜘蛛設置。但這絕對是一種方式。Scrapy。開始抓取後如何更改蜘蛛設置?
例如:
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'
但是!物品將由FirstPipeline處理。新的ITEM_PIPELINES參數不起作用。 如何在開始抓取後更改設置?提前致謝!
管道被初始化,然後在發動機啓動激活。我不確定你是否可以在執行期間改變它。但是,您可以在啓動時激活兩個管道,並在管道中添加一些邏輯,只有在滿足特定條件時纔會處理該項目。 –
是的,這是我最後的選擇。感謝您的回覆。我認爲像蜘蛛信號這樣的東西可以提供幫助,但這很困難。 – fcmax
當然,您可以將各種功能附加到各種蜘蛛信號。你可能想把擴展器中的處理器附加到信號上。另請參閱:http://doc.scrapy.org/zh/latest/topics/extensions.html#writing-your-own-extension –