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

資訊專欄INFORMATION COLUMN

scrapy之DOWNLOADER MIDDLEWARES

wangym / 2955人閱讀

摘要:已安裝的中間件的方法則會在每個返回時被調(diào)用。當(dāng)新返回的被執(zhí)行后,相應(yīng)地中間件鏈將會根據(jù)下載的被調(diào)用。參數(shù)對象處理的對象該對應(yīng)的必須返回以下之一對象對象或。果其拋出一個異常,則調(diào)用的。

0.前言

第一次寫博客,想想都還有點(diǎn)小激動,其實(shí)早就想寫寫這段時間的學(xué)習(xí)歷程了,奈何文字功底不強(qiáng),總是剛提筆就放下了。覺得以后還是要堅(jiān)持下去~~
這篇文章主要講了在scrapy中的DOWNLOADER MIDDLEWARES

1.scrapy中的DOWNLOADER_MIDDLEWARES

下載器中間件事Scrapy在處理請求/響應(yīng)時的鉤子,是用來全局改變Scrapy的請求和響應(yīng)的一個輕量,底層的系統(tǒng)

1.1激活下載器中間件

要激活下載器中間件組件,將其加入到DOWNLOADER_MIDDLEWARES設(shè)置中。該設(shè)置是一個字典,鍵為中間件的類的路徑,值為其中間件的順序,如:

DOWNLOADER_MIDDLEWARES = {
"myproject.middlewares.CustomDownloaderMiddleware": 543,
}

DOWNLOADER_MIDDLEWARES設(shè)置會與 Scrapy 定義的DOWNLOADER_MIDDLEWARES_BASE 設(shè)置合并(但不是覆蓋),而后根據(jù)順序(order)進(jìn)行排序,最后得到啟用中間件的有序列表: 第一個中間件是最靠近引擎的,最后一個中間件是最靠近下載器的。
關(guān)于如何分配中間件的順序請查看DOWNLOADER_MIDDLEWARES_BASE 設(shè)置,而后根據(jù)您想要放置中間件的位置選擇一個值。由于每個中間件執(zhí)行不同的動作,您的中間件可能會依賴于之前(或者之后)執(zhí)行的中間件,因此順序是很重要的。
如果您想禁止內(nèi)置的(在DOWNLOADER_MIDDLEWARES_BASE 中設(shè)置并默認(rèn)啟用的)中間件,您必須在項(xiàng)目的 DOWNLOADER_MIDDLEWARES 設(shè)置中定義該中間件,并將其值賦為None。例如,如果您想要關(guān)閉user-agent 中間件:

DOWNLOADER_MIDDLEWARES = {
"myproject.middlewares.CustomDownloaderMiddleware": 543,
"scrapy.downloadermiddlewares.useragent.UserAgentMiddleware": None,
}
1.2編寫自己的中間件下載組件

每個中間件組成部分都是一個Python類,這個類定義了以下方法中的一個或多個:

class scrapy.downloadermiddlewares.DownloaderMiddleware
    process_request(request,spider)
    process_response(request, response, spider)
    process_exception(request, exception, spider)

詳細(xì)介紹:

proces_request(request,spider):

每個request通過下載中間件時,該方法被調(diào)用

必須返回其中之一:None,Response對象,Request對象或者raise IgnoreRequest。

如果返回None,Scrapy將繼續(xù)處理該Request,執(zhí)行其他的中間件的相應(yīng)方法,直到合適的下載處理函數(shù)被調(diào)用,請求被執(zhí)行,響應(yīng)被下載

如果返回 Response對象,Scrapy將不會調(diào)用其他任proces_request()或者process_exception()方法,或者相應(yīng)的下載函數(shù);它將返回這個響應(yīng)。已安裝的中間件的 process_response()方法則會在每個response返回時被調(diào)用。

如果其返回 Request 對象,Scrapy 則停止調(diào)用 process_request 方法并重新調(diào)度返回的request。當(dāng)新返回的request被執(zhí)行后,相應(yīng)地中間件鏈將會根據(jù)下載的response被調(diào)用。

如果其raise一個IgnoreRequest 異常,則安裝的下載中間件的 process_exception() 方法會被調(diào)用。如果沒有任何一個方法處理該異常, 則 request 的 errback( Request.errback )方法會被調(diào)用。如果沒有代碼處理拋出的異常, 則該異常被忽略且不記錄(不同于其他異常那樣)。

參數(shù):

 1.request ( Request 對象) – 處理的 request
 2.spider ( Spider 對象) – 該 request 對應(yīng)的 spider

process_response(request, response, spider):

必須返回以下之一:Response 對象、Request 對象或raise IgnoreRequest。

如果其返回一個Response(可以與傳入的 response 相同,也可以是全新的對象) 該 response 會被在鏈中的其他中間件的process_response()方法處理。

如果其返回一個 Request 對象,則中間件鏈停止,返回的 request 會被重新調(diào)度下載。處理類似于 process_request()返回 request 所做的那樣。

果其拋出一個 IgnoreRequest 異常,則調(diào)用 request 的 errback(Request.errback)。如果沒有代碼處理拋出的異常,則該異常被忽略且不記錄(不同于其他異常那樣)。

參數(shù)

  1.request (Request對象) – response 所對應(yīng)的 request
  2.response (Response對象) – 被處理的 response
  3.spider (Spider對象) – response 所對應(yīng)的 spider

process_exception(request, exception, spider):

返回以下之一: 返回None 、一個 Response 對象、或者一個 Request 對象。

如果其返回None,Scrapy 將會繼續(xù)處理該異常,接著調(diào)用已安裝的其他中間件的 process_exception()方法,直到所有中間件都被調(diào)用完畢,則調(diào)用默認(rèn)的異常處理。

如果其返回一個 Response 對象,則已安裝的中間件鏈的 process_response()方法被調(diào)用。Scrapy 將不會調(diào)用任何其他中間件的 process_exception() 方法。

如果其返回一個Request對象,則返回的request將會被重新調(diào)用下載。這將停止中間件的 process_exception()方法執(zhí)行,就如返回一個 response 的那樣。

參數(shù)

     1.request(Request 對象) – 產(chǎn)生異常的 request
     2.exception(Exception 對象) – 拋出的異常
     3.spider(Spider 對象) – request 對應(yīng)的 spider

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

轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/37882.html

相關(guān)文章

  • Python網(wǎng)頁信息采集:使用PhantomJS采集淘寶天貓商品內(nèi)容

    摘要:,引言最近一直在看爬蟲框架,并嘗試使用框架寫一個可以實(shí)現(xiàn)網(wǎng)頁信息采集的簡單的小程序。本文主要介紹如何使用結(jié)合采集天貓商品內(nèi)容,文中自定義了一個,用來采集需要加載的動態(tài)網(wǎng)頁內(nèi)容。 showImg(https://segmentfault.com/img/bVyMnP); 1,引言 最近一直在看Scrapy 爬蟲框架,并嘗試使用Scrapy框架寫一個可以實(shí)現(xiàn)網(wǎng)頁信息采集的簡單的小程序。嘗試...

    z2xy 評論0 收藏0
  • Python爬蟲Scrapy學(xué)習(xí)(基礎(chǔ)篇)

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

    pkhope 評論0 收藏0
  • scrapy學(xué)習(xí)路5(selenium集成到scrapy下(crawspider未測試))

    摘要:基本優(yōu)化為了不讓每次啟動添加它到定義類的初始方法中啟動優(yōu)化瀏覽器的自動開啟與關(guān)閉在中加入信號鏈爬蟲結(jié)束會輸出 1:基本 Middlewares.py(downloader)showImg(https://segmentfault.com/img/bV182i?w=893&h=311); spider/xxx.pyshowImg(https://segmentfault.com/img/...

    adie 評論0 收藏0
  • Scrapy 爬取七麥 app數(shù)據(jù)排行榜

    摘要:目錄前言創(chuàng)建項(xiàng)目創(chuàng)建創(chuàng)建解析付費(fèi)榜運(yùn)行爬取初始列表調(diào)用腳本獲取詳情前言熟悉之后,本篇文章帶大家爬取七麥數(shù)據(jù)的付費(fèi)應(yīng)用排行榜前名應(yīng)用。根據(jù)傳入的正則表達(dá)式對數(shù)據(jù)進(jìn)行提取,返回字符串列表。 目錄 前言 創(chuàng)建項(xiàng)目 創(chuàng)建Item 創(chuàng)建Spider 解析付費(fèi)榜 運(yùn)行爬取初始app列表 Selenium調(diào)用JS腳本 獲取app詳情 前言 熟悉Scrapy之后,本篇文章帶大家爬取七麥數(shù)據(jù)(h...

    kk_miles 評論0 收藏0

發(fā)表評論

0條評論

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