scrapy提公升篇之配置

2021-09-28 18:42:23 字數 2327 閱讀 5265

併發是指同時處理的request的數量。其有全域性限制和區域性(每個**)的限制。

scrapy預設的全域性併發限制對同時爬取大量**的情況並不適用,因此您需要增加這個值。 增加多少取決於您的爬蟲能占用多少cpu。 一般開始可以設定為 100 。不過最好的方式是做一些測試,獲得scrapy程序占取cpu與併發數的關係。 為了優化效能,您應該選擇乙個能使cpu佔用率在80%-90%的併發數

setting.py檔案中寫上concurrent_requests = 100,scrapy中預設的併發數是32

當進行通用爬取時,一般您所注意的僅僅是爬取的速率以及遇到的錯誤。 scrapy使用 info log級別來報告這些資訊。為了減少cpu使用率(及記錄log儲存的要求), 在生產環境中進行通用爬取時您不應該使用 debug log級別。 不過在開發的時候使用 debug 應該還能接受。

setting.py檔案中設定log_level = 'info'

除非您 真的 需要,否則請禁止cookies。在進行通用爬取時cookies並不需要, (搜尋引擎則忽略cookies)。禁止cookies能減少cpu使用率及scrapy爬蟲在記憶體中記錄的蹤跡,提高效能。

cookies_enabled = false

對失敗的http請求進行重試會減慢爬取的效率,尤其是當站點響應很慢(甚至失敗)時, 訪問這樣的站點會造成超時並重試多次。這是不必要的,同時也占用了爬蟲爬取其他站點的能力。

retry_enabled = false

除非您對跟進重定向感興趣,否則請考慮關閉重定向。 當進行通用爬取時,一般的做法是儲存重定向的位址,並在之後的爬取進行解析。 這保證了每批爬取的request數目在一定的數量, 否則重定向迴圈可能會導致爬蟲在某個站點耗費過多資源。

redirect_enabled = false

詳細使用方法請看設定請求池

因為本人是學生黨,因此暫時找到不到比較好的**,所以這裡只是寫了乙個一般的設定**池的方法,不過在以後會寫乙個更好的**池,用資料實現,詳情請看**ip設定方法

在頁面的任意位置新增如下**

from scrapy.shell import inspect_response

def paser(self,response):

inspect_response(response,self) #當程式執行到這裡就會跳出終端,並且在終端出現除錯命令,當然這個可以隨便寫在**

初學者最頭疼的事情就是沒有處理好異常,當爬蟲爬到一半的時候突然因為錯誤而中斷了,但是這時又不能從中斷的地方開始繼續爬,頓時感覺心裡日了狗,但是這裡有乙個方法可以暫時的儲存你爬的狀態,當爬蟲中斷的時候繼續開啟後依然可以從中斷的地方爬,不過雖說持久化可以有效的處理,但是要注意的是當使用cookie臨時的模擬登入狀態的時候要注意cookie的有效期

只需要在setting.pyjob_dir=file_name其中填的是你的檔案目錄,注意這裡的目錄不允許共享,只能儲存單獨的乙個spdire的執行狀態,如果你不想在從中斷的地方開始執行,只需要將這個資料夾刪除即可

當然還有其他的放法:scrapy crawl somespider -s jobdir=crawls/somespider-1,這個是在終端啟動爬蟲的時候呼叫的,可以通過ctr+c中斷,恢復還是輸入上面的命令

robotstxt_obey = false

只需要在settings中取消相應的設定即可

default_request_headers=}

scrapy爬取效率提公升配置

增加併發 預設scrapy開啟的併發執行緒為32個,可以適當進行增加。在settings配置檔案中修改concurrent requests 100值為100,併發設定成了為100。降低日誌級別 在執行scrapy時,會有大量日誌資訊的輸出,為了減少cpu的使用率。可以設定log輸出資訊為info或...

Scrapy學習篇(四)之資料儲存

修改items.py檔案來定義我們的item item 是儲存爬取到的資料的容器 其使用方法和python字典類似。雖然你也可以在scrapy中直接使用dict,但是item提供了額外保護機制來避免拼寫錯誤導致的未定義字段錯誤。簡單的來說,你所要儲存的任何的內容,都需要使用item來定義,比如我們現...

Python爬蟲之Scrapy學習(基礎篇)

在爬蟲的路上,學習scrapy是乙個必不可少的環節。也許有好多朋友此時此刻也正在接觸並學習scrapy,那麼很好,我們一起學習。開始接觸scrapy的朋友可能會有些疑惑,畢竟是乙個框架,上來不知從何學起。從本篇起,博主將開啟scrapy學習的系列,分享如何快速入門scrapy並熟練使用它。本篇作為第...