国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

scrapy提升篇之配置

劉永祥 / 643人閱讀

摘要:提升篇之配置增加并發并發是指同時處理的的數量。其有全局限制和局部每個網站的限制。使用級別來報告這些信息。在進行通用爬取時并不需要,搜索引擎則忽略。禁止能減少使用率及爬蟲在內存中記錄的蹤跡,提高性能。

scrapy提升篇之配置 增加并發

并發是指同時處理的request的數量。其有全局限制和局部(每個網站)的限制。
Scrapy默認的全局并發限制對同時爬取大量網站的情況并不適用,因此您需要增加這個值。 增加多少取決于您的爬蟲能占用多少CPU。 一般開始可以設置為 100 。不過最好的方式是做一些測試,獲得Scrapy進程占取CPU與并發數的關系。 為了優化性能,您應該選擇一個能使CPU占用率在80%-90%的并發數
setting.py文件中寫上CONCURRENT_REQUESTS = 100,scrapy中默認的并發數是32

降低log級別

當進行通用爬取時,一般您所注意的僅僅是爬取的速率以及遇到的錯誤。 Scrapy使用 INFO log級別來報告這些信息。為了減少CPU使用率(及記錄log存儲的要求), 在生產環境中進行通用爬取時您不應該使用 DEBUG log級別。 不過在開發的時候使用 DEBUG 應該還能接受。
setting.py文件中設置LOG_LEVEL = "INFO"

禁止cookies

除非您 真的 需要,否則請禁止cookies。在進行通用爬取時cookies并不需要, (搜索引擎則忽略cookies)。禁止cookies能減少CPU使用率及Scrapy爬蟲在內存中記錄的蹤跡,提高性能。
COOKIES_ENABLED = False

禁止重試

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

RETRY_ENABLED = False

減少下載超時

如果您對一個非常慢的連接進行爬取(一般對通用爬蟲來說并不重要), 減小下載超時能讓卡住的連接能被快速的放棄并解放處理其他站點的能力。

DOWNLOAD_TIMEOUT = 15,其中15是設置的下載超時時間

禁止重定向

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

REDIRECT_ENABLED = False

使用user_agent池

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

使用ip代理池

因為本人是學生黨,因此暫時找到不到比較好的代理,所以這里只是寫了一個一般的設置代理池的方法,不過在以后會寫一個更好的代理池,用數據實現,詳情請看代理ip設置方法

設置延遲

DOWMLOAD_DELY=3,設置延遲下載可以避免被發現

啟用調試工具 命令行調試

scrapy shell url 查看網頁,不過這種方式可能對于要請求頭的網頁不行,對于一般的網頁還是可以的

scrapy view shell 用來查看動態加載的網頁,如果查看的網頁用了動態加載,那么用這個命令行打開的網頁就是不完整的,肯定缺少了什么

編輯器中的調試

在頁面的任意位置添加如下代碼

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中斷,恢復還是輸入上面的命令

不按照robots.txt

ROBOTSTXT_OBEY = False

配置請求頭

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

DEFAULT_REQUEST_HEADERS={{
    "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
    "Accept-Language": "en",
    "User-Agent":"......"   #在此處設置
}}
更多文章請移步本人博客

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/44339.html

相關文章

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

    摘要:下載器下載器負責獲取頁面數據并提供給引擎,而后提供給。下載器中間件下載器中間件是在引擎及下載器之間的特定鉤子,處理傳遞給引擎的。一旦頁面下載完畢,下載器生成一個該頁面的,并將其通過下載中間件返回方向發送給引擎。 作者:xiaoyu微信公眾號:Python數據科學知乎:Python數據分析師 在爬蟲的路上,學習scrapy是一個必不可少的環節。也許有好多朋友此時此刻也正在接觸并學習sc...

    pkhope 評論0 收藏0
  • Flutter是跨平臺開發終極之選嗎?Android開發該如何快速上手Flutter?

    摘要:月日,谷歌正式發布了的。到底能不能成為跨平臺開發終極之選是基于前端誕生的,但是對前端開發來說,的環境配置很麻煩,需要原生的平臺知識,還要擔心遇上網絡問題。現在已經不是曾經的小眾框架,這兩年里它已經逐步成長為主流的跨平臺開發框架之一。 ...

    luckyyulin 評論0 收藏0
  • 前端工程化篇之 Gulp

    摘要:是一個構建工具,基于的平臺運行,使用的是的模塊化語法。我們使用需要用到的包一個任務,對應一個包,對應一個處理邏輯對應的是同步任務,從左到右,依次執行任務。時間長對應的是異步任務,效率高,時間短。 gulp 是一個構建工具,基于Node.js的平臺運行,使用的是commonJs的模塊化語法。 我們使用gulp需要用到的包 一個TASK任務,對應一個包,對應一個處理邏輯、 gulp.s...

    Donald 評論0 收藏0
  • 前端工程化篇之 Gulp

    摘要:是一個構建工具,基于的平臺運行,使用的是的模塊化語法。我們使用需要用到的包一個任務,對應一個包,對應一個處理邏輯對應的是同步任務,從左到右,依次執行任務。時間長對應的是異步任務,效率高,時間短。 gulp 是一個構建工具,基于Node.js的平臺運行,使用的是commonJs的模塊化語法。 我們使用gulp需要用到的包 一個TASK任務,對應一個包,對應一個處理邏輯、 gulp.s...

    LeanCloud 評論0 收藏0

發表評論

0條評論

劉永祥

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<