- 有些情況下,例如爬取大的站點,我們希望能暫停爬取,之后再恢復運行。
- Scrapy通過如下工具支持這個功能:
一個把調度請求保存在磁盤的調度器
一個把訪問請求保存在磁盤的副本過濾器[duplicates filter]
一個能持續(xù)保持爬蟲狀態(tài)(鍵/值對)的擴展
- Job 路徑:
要啟用持久化支持,你只需要通過 JOBDIR 設置 job directory 選項。
這個路徑將會存儲 所有的請求數(shù)據(jù)來保持一個單獨任務的狀態(tài)(例如:一次
spider爬取(a spider run))。必須要注意的是,這個目錄不允許被不同的
spider 共享,甚至是同一個spider的不同jobs/runs也不行。也就是說,
這個目錄就是存儲一個 單獨 job的狀態(tài)信息。
- 怎么使用??? 要啟用一個爬蟲的持久化,運行以下命令:
scrapy crawl 爬蟲名稱 -s JOBDIR=crawls/爬蟲名稱
- 然后,你就能在任何時候安全地停止爬蟲(按Ctrl-C或者發(fā)送一個信號,這時候會看到crawls文件夾下保存了一些文件)。恢復這個爬蟲也是同樣的命令:
scrapy crawl 爬蟲名稱 -s JOBDIR=crawls/爬蟲名稱
- 運行代碼之后會默認生成以下文件:
spider.status : 爬蟲運行的狀態(tài)
requests.queue : 保存的請求的任務隊列
requests.seen : 保存的是指紋