scrapy的每一個爬蟲,暫停時可以記錄暫停狀態以及爬取了哪些url,重啟時可以從暫停狀態開始爬取過的URL不在爬取
實現暫停與重啟記錄狀態
方法一:
1、首先cd進入到scrapy項目里(當然你也可以通過編寫腳本Python文件直接在pycharm中運行)
2、在scrapy項目里創建保存記錄信息的文件夾
3、執行命令:
scrapy crawl 爬蟲名稱 -s JOBDIR=保存記錄信息的路徑
如:scrapy crawl xxx -s JOBDIR=xxx/xxx
執行命令會啟動指定爬蟲,並且記錄狀態到指定目錄
爬蟲已經啟動,我們可以按鍵盤上的ctrl+c停止爬蟲,停止后我們看一下記錄文件夾,會多出3個文件,其中的requests.queue文件夾里的p0文件就是URL記錄文件,這個文件存在就說明還有未完成的URL,當所有URL完成后會自動刪除此文件
當我們重新執行命令:scrapy crawl xxx -s JOBDIR=xxx/xxx 時爬蟲會根據p0文件從停止的地方開始繼續爬取。
方法二:
在settings.py文件里加入下面的代碼:
JOBDIR='xxx.com'
使用命令scrapy crawl xxxspider,就會自動生成一個xxx.com的目錄,然后將工作列表放到這個文件夾里
以上這兩個方法,有時候並不是非常有效,之前項目中用到這兩種方法,遇到的問題也不少,比如說有時候會發現無法用ctri+終止,或者是再次啟動的時候發現爬蟲無法正常爬取,開始即結束,當你第二次輸入啟動命令啟動時爬蟲會覆蓋掉原來的數據,重新開始,起不到很好的暫停重啟的效果。當時推測這個問題出現的原因可能是爬取的數據較少引起的,但是后來發現並不是,也一直在找這個問題出現的原因。