2013-07-15 42 views
10

我編寫了一個簡單的爬蟲程序。 在settings.py文件,參照scrapy文檔,我用避免重複的URL爬取

DUPEFILTER_CLASS = 'scrapy.dupefilter.RFPDupeFilter' 

如果我停止抓取並重新啓動爬行,它再次刮重複的網址。 我做錯了什麼?

回答

20

我相信你正在尋找的是「持久性支持」,以暫停和恢復爬網。

要啓用它,你可以這樣做:

scrapy crawl somespider -s JOBDIR=crawls/somespider-1 

你可以閱讀更多關於它here

+6

我認爲這應該是被接受的答案。 – Mithril

6

根據documentationDUPEFILTER_CLASS默認設置爲scrapy.dupefilter.RFPDupeFilter

RFPDupeFilter如果您停止抓取工具,它只會在實際抓取時起作用,這有助於避免抓取重複的網址。

看起來你需要根據RFPDupeFilter創建自己的自定義過濾器,就像它在這裏完成:how to filter duplicate requests based on url in scrapy。如果您希望過濾器在scrapy抓取會話之間工作,則應將抓取的URL的列表保留在數據庫中的某個位置,或csv文件中。

希望有所幫助。

0

您可以用Redis重寫Scheduler,如scrapy-redis然後您可以重新運行您的項目時避免重複的URL爬行