我編寫了一個簡單的爬蟲程序。 在settings.py文件,參照scrapy文檔,我用避免重複的URL爬取
DUPEFILTER_CLASS = 'scrapy.dupefilter.RFPDupeFilter'
如果我停止抓取並重新啓動爬行,它再次刮重複的網址。 我做錯了什麼?
我編寫了一個簡單的爬蟲程序。 在settings.py文件,參照scrapy文檔,我用避免重複的URL爬取
DUPEFILTER_CLASS = 'scrapy.dupefilter.RFPDupeFilter'
如果我停止抓取並重新啓動爬行,它再次刮重複的網址。 我做錯了什麼?
我相信你正在尋找的是「持久性支持」,以暫停和恢復爬網。
要啓用它,你可以這樣做:
scrapy crawl somespider -s JOBDIR=crawls/somespider-1
你可以閱讀更多關於它here。
根據documentation,DUPEFILTER_CLASS
默認設置爲scrapy.dupefilter.RFPDupeFilter
。
RFPDupeFilter
如果您停止抓取工具,它只會在實際抓取時起作用,這有助於避免抓取重複的網址。
看起來你需要根據RFPDupeFilter
創建自己的自定義過濾器,就像它在這裏完成:how to filter duplicate requests based on url in scrapy。如果您希望過濾器在scrapy抓取會話之間工作,則應將抓取的URL的列表保留在數據庫中的某個位置,或csv文件中。
希望有所幫助。
您可以用Redis重寫Scheduler,如scrapy-redis然後您可以重新運行您的項目時避免重複的URL爬行。
我認爲這應該是被接受的答案。 – Mithril