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

資訊專欄INFORMATION COLUMN

scrapy提升篇之配置

劉永祥 / 645人閱讀

摘要:提升篇之配置增加并發(fā)并發(fā)是指同時(shí)處理的的數(shù)量。其有全局限制和局部每個(gè)網(wǎng)站的限制。使用級(jí)別來(lái)報(bào)告這些信息。在進(jìn)行通用爬取時(shí)并不需要,搜索引擎則忽略。禁止能減少使用率及爬蟲(chóng)在內(nèi)存中記錄的蹤跡,提高性能。

scrapy提升篇之配置 增加并發(fā)

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

降低log級(jí)別

當(dāng)進(jìn)行通用爬取時(shí),一般您所注意的僅僅是爬取的速率以及遇到的錯(cuò)誤。 Scrapy使用 INFO log級(jí)別來(lái)報(bào)告這些信息。為了減少CPU使用率(及記錄log存儲(chǔ)的要求), 在生產(chǎn)環(huán)境中進(jìn)行通用爬取時(shí)您不應(yīng)該使用 DEBUG log級(jí)別。 不過(guò)在開(kāi)發(fā)的時(shí)候使用 DEBUG 應(yīng)該還能接受。
setting.py文件中設(shè)置LOG_LEVEL = "INFO"

禁止cookies

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

禁止重試

對(duì)失敗的HTTP請(qǐng)求進(jìn)行重試會(huì)減慢爬取的效率,尤其是當(dāng)站點(diǎn)響應(yīng)很慢(甚至失敗)時(shí), 訪問(wèn)這樣的站點(diǎn)會(huì)造成超時(shí)并重試多次。這是不必要的,同時(shí)也占用了爬蟲(chóng)爬取其他站點(diǎn)的能力。

RETRY_ENABLED = False

減少下載超時(shí)

如果您對(duì)一個(gè)非常慢的連接進(jìn)行爬取(一般對(duì)通用爬蟲(chóng)來(lái)說(shuō)并不重要), 減小下載超時(shí)能讓卡住的連接能被快速的放棄并解放處理其他站點(diǎn)的能力。

DOWNLOAD_TIMEOUT = 15,其中15是設(shè)置的下載超時(shí)時(shí)間

禁止重定向

除非您對(duì)跟進(jìn)重定向感興趣,否則請(qǐng)考慮關(guān)閉重定向。 當(dāng)進(jìn)行通用爬取時(shí),一般的做法是保存重定向的地址,并在之后的爬取進(jìn)行解析。 這保證了每批爬取的request數(shù)目在一定的數(shù)量, 否則重定向循環(huán)可能會(huì)導(dǎo)致爬蟲(chóng)在某個(gè)站點(diǎn)耗費(fèi)過(guò)多資源。

REDIRECT_ENABLED = False

使用user_agent池

詳細(xì)使用方法請(qǐng)看設(shè)置請(qǐng)求池

使用ip代理池

因?yàn)楸救耸菍W(xué)生黨,因此暫時(shí)找到不到比較好的代理,所以這里只是寫了一個(gè)一般的設(shè)置代理池的方法,不過(guò)在以后會(huì)寫一個(gè)更好的代理池,用數(shù)據(jù)實(shí)現(xiàn),詳情請(qǐng)看代理ip設(shè)置方法

設(shè)置延遲

DOWMLOAD_DELY=3,設(shè)置延遲下載可以避免被發(fā)現(xiàn)

啟用調(diào)試工具 命令行調(diào)試

scrapy shell url 查看網(wǎng)頁(yè),不過(guò)這種方式可能對(duì)于要請(qǐng)求頭的網(wǎng)頁(yè)不行,對(duì)于一般的網(wǎng)頁(yè)還是可以的

scrapy view shell 用來(lái)查看動(dòng)態(tài)加載的網(wǎng)頁(yè),如果查看的網(wǎng)頁(yè)用了動(dòng)態(tài)加載,那么用這個(gè)命令行打開(kāi)的網(wǎng)頁(yè)就是不完整的,肯定缺少了什么

編輯器中的調(diào)試

在頁(yè)面的任意位置添加如下代碼

from scrapy.shell import inspect_response
def paser(self,response):
    inspect_response(response,self)     #當(dāng)程序運(yùn)行到這里就會(huì)跳出終端,并且在終端出現(xiàn)調(diào)試命令,當(dāng)然這個(gè)可以隨便寫在哪里
暫停和恢復(fù)爬蟲(chóng)

初學(xué)者最頭疼的事情就是沒(méi)有處理好異常,當(dāng)爬蟲(chóng)爬到一半的時(shí)候突然因?yàn)殄e(cuò)誤而中斷了,但是這時(shí)又不能從中斷的地方開(kāi)始繼續(xù)爬,頓時(shí)感覺(jué)心里日了狗,但是這里有一個(gè)方法可以暫時(shí)的存儲(chǔ)你爬的狀態(tài),當(dāng)爬蟲(chóng)中斷的時(shí)候繼續(xù)打開(kāi)后依然可以從中斷的地方爬,不過(guò)雖說(shuō)持久化可以有效的處理,但是要注意的是當(dāng)使用cookie臨時(shí)的模擬登錄狀態(tài)的時(shí)候要注意cookie的有效期

只需要在setting.pyJOB_DIR=file_name 其中填的是你的文件目錄,注意這里的目錄不允許共享,只能存儲(chǔ)多帶帶的一個(gè)spdire的運(yùn)行狀態(tài),如果你不想在從中斷的地方開(kāi)始運(yùn)行,只需要將這個(gè)文件夾刪除即可

當(dāng)然還有其他的放法:scrapy crawl somespider -s JOBDIR=crawls/somespider-1,這個(gè)是在終端啟動(dòng)爬蟲(chóng)的時(shí)候調(diào)用的,可以通過(guò)ctr+c中斷,恢復(fù)還是輸入上面的命令

不按照robots.txt

ROBOTSTXT_OBEY = False

配置請(qǐng)求頭

只需要在settings中取消相應(yīng)的設(shè)置即可

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

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/44339.html

相關(guān)文章

  • Python爬蟲(chóng)之Scrapy學(xué)習(xí)(基礎(chǔ)篇)

    摘要:下載器下載器負(fù)責(zé)獲取頁(yè)面數(shù)據(jù)并提供給引擎,而后提供給。下載器中間件下載器中間件是在引擎及下載器之間的特定鉤子,處理傳遞給引擎的。一旦頁(yè)面下載完畢,下載器生成一個(gè)該頁(yè)面的,并將其通過(guò)下載中間件返回方向發(fā)送給引擎。 作者:xiaoyu微信公眾號(hào):Python數(shù)據(jù)科學(xué)知乎:Python數(shù)據(jù)分析師 在爬蟲(chóng)的路上,學(xué)習(xí)scrapy是一個(gè)必不可少的環(huán)節(jié)。也許有好多朋友此時(shí)此刻也正在接觸并學(xué)習(xí)sc...

    pkhope 評(píng)論0 收藏0
  • Flutter是跨平臺(tái)開(kāi)發(fā)終極之選嗎?Android開(kāi)發(fā)該如何快速上手Flutter?

    摘要:月日,谷歌正式發(fā)布了的。到底能不能成為跨平臺(tái)開(kāi)發(fā)終極之選是基于前端誕生的,但是對(duì)前端開(kāi)發(fā)來(lái)說(shuō),的環(huán)境配置很麻煩,需要原生的平臺(tái)知識(shí),還要擔(dān)心遇上網(wǎng)絡(luò)問(wèn)題。現(xiàn)在已經(jīng)不是曾經(jīng)的小眾框架,這兩年里它已經(jīng)逐步成長(zhǎng)為主流的跨平臺(tái)開(kāi)發(fā)框架之一。 ...

    luckyyulin 評(píng)論0 收藏0
  • 前端工程化篇之 Gulp

    摘要:是一個(gè)構(gòu)建工具,基于的平臺(tái)運(yùn)行,使用的是的模塊化語(yǔ)法。我們使用需要用到的包一個(gè)任務(wù),對(duì)應(yīng)一個(gè)包,對(duì)應(yīng)一個(gè)處理邏輯對(duì)應(yīng)的是同步任務(wù),從左到右,依次執(zhí)行任務(wù)。時(shí)間長(zhǎng)對(duì)應(yīng)的是異步任務(wù),效率高,時(shí)間短。 gulp 是一個(gè)構(gòu)建工具,基于Node.js的平臺(tái)運(yùn)行,使用的是commonJs的模塊化語(yǔ)法。 我們使用gulp需要用到的包 一個(gè)TASK任務(wù),對(duì)應(yīng)一個(gè)包,對(duì)應(yīng)一個(gè)處理邏輯、 gulp.s...

    Donald 評(píng)論0 收藏0
  • 前端工程化篇之 Gulp

    摘要:是一個(gè)構(gòu)建工具,基于的平臺(tái)運(yùn)行,使用的是的模塊化語(yǔ)法。我們使用需要用到的包一個(gè)任務(wù),對(duì)應(yīng)一個(gè)包,對(duì)應(yīng)一個(gè)處理邏輯對(duì)應(yīng)的是同步任務(wù),從左到右,依次執(zhí)行任務(wù)。時(shí)間長(zhǎng)對(duì)應(yīng)的是異步任務(wù),效率高,時(shí)間短。 gulp 是一個(gè)構(gòu)建工具,基于Node.js的平臺(tái)運(yùn)行,使用的是commonJs的模塊化語(yǔ)法。 我們使用gulp需要用到的包 一個(gè)TASK任務(wù),對(duì)應(yīng)一個(gè)包,對(duì)應(yīng)一個(gè)處理邏輯、 gulp.s...

    LeanCloud 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

劉永祥

|高級(jí)講師

TA的文章

閱讀更多
最新活動(dòng)
閱讀需要支付1元查看
<