我是Python的初學者& Scrapy。我剛剛創建了一個包含多個蜘蛛的Scrapy項目,運行「scrapy crawl ..」時,它只運行第一個蜘蛛。如何在Scrapy中的相同過程中運行多個蜘蛛
我如何在同一個過程中運行所有的蜘蛛?
在此先感謝。
我是Python的初學者& Scrapy。我剛剛創建了一個包含多個蜘蛛的Scrapy項目,運行「scrapy crawl ..」時,它只運行第一個蜘蛛。如何在Scrapy中的相同過程中運行多個蜘蛛
我如何在同一個過程中運行所有的蜘蛛?
在此先感謝。
對於文件中的每個蜘蛛,您將擁有一個名稱,該名稱爲name="youspidername"
。當你使用scrapy crawl yourspidername
來調用它時,它只會抓取該蜘蛛。您將不得不再次發出命令,使用scrapy crawl youotherspidername
來運行其他蜘蛛。
另一種方式是隻提到在同一命令所有的蜘蛛狀scrapy crawl yourspidername,yourotherspidername,etc..
(不支持scrapy的新版本此方法)
每個人,甚至是文檔,建議使用內部API以筆者一個「運行腳本」,用於控制多個蜘蛛的啓動和停止。然而,這有很多警告,除非你完全正確(feedexports不工作,扭曲的反應堆要麼不停止或停止太快等)。
在我看來,我們有一個已知的工作和支持scrapy crawl x
命令,因此處理這個問題的一個更簡單的方法是使用GNU Parallel來parellize。
安裝後,要(從shell)運行的每個核心一個scrapy蜘蛛並假設你想在你的項目中運行的所有的人:
scrapy list | parallel --line-buffer scrapy crawl
如果你只有一個核心,你可以玩與GNU Parallel的--jobs
爭執。例如,以下將運行每個核心2個scrapy作業:
scrapy list | parallel --jobs 200% --line-buffer scrapy crawl
您是否需要運行同一個蜘蛛或一組不同的蜘蛛的多個實例? – Talvalin
我的項目文件夾「蜘蛛」上有很多蜘蛛。 &我希望一次性運行所有這些,而不是爲每個人運行「scrapy crawl」。另外,我想知道是否有辦法自動執行此任務,例如每隔一小時運行一次爬網。 謝謝 – elhoucine