日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

17-爬虫之scrapy框架五大核心组件工作流程及下载中间件介绍04

發(fā)布時(shí)間:2024/9/15 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 17-爬虫之scrapy框架五大核心组件工作流程及下载中间件介绍04 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

scrapy的五大核心組件

引擎(Scrapy)

對(duì)整個(gè)系統(tǒng)的數(shù)據(jù)流進(jìn)行處理, 觸發(fā)事務(wù)(框架核心).

調(diào)度器(Scheduler)

用來(lái)接受引擎發(fā)過(guò)來(lái)的請(qǐng)求. 由過(guò)濾器過(guò)濾重復(fù)的url并將其壓入隊(duì)列中, 在引擎再次請(qǐng)求的時(shí)候返回. 可以想像成一個(gè)URL(抓取網(wǎng)頁(yè)的網(wǎng)址或者說(shuō)是鏈接)的優(yōu)先隊(duì)列, 由它來(lái)決定下一個(gè)要抓取的網(wǎng)址是什么.

下載器(Downloader)

用于下載網(wǎng)頁(yè)內(nèi)容, 并將網(wǎng)頁(yè)內(nèi)容返回給蜘蛛(Scrapy下載器是建立在twisted這個(gè)高效的異步模型上的).

爬蟲(Spiders)

爬蟲是主要干活的, 它可以生成url, 并從特定的url中提取自己需要的信息, 即所謂的實(shí)體(Item). 用戶也可以從中提取出鏈接, 讓Scrapy繼續(xù)抓取下一個(gè)頁(yè)面.

項(xiàng)目管道(Pipeline)

負(fù)責(zé)處理爬蟲從網(wǎng)頁(yè)中抽取的實(shí)體, 主要的功能是持久化實(shí)體、驗(yàn)證實(shí)體的有效性、清除不需要的信息. 當(dāng)頁(yè)面被爬蟲解析后, 將被發(fā)送到項(xiàng)目管道, 并經(jīng)過(guò)幾個(gè)特定的次序處理數(shù)據(jù).

工作流程


  當(dāng)我們執(zhí)行爬蟲文件的時(shí)候,這五大組件就已經(jīng)開始工作了 。其中,

  • 1 首先,我們最原始的起始url是在我們爬蟲文件中的,通常情況系,起始的url只有一個(gè),當(dāng)我們的爬蟲文件執(zhí)行的時(shí)候,首先對(duì)起始url發(fā)送請(qǐng)求,將起始url封裝成了請(qǐng)求對(duì)象,將請(qǐng)求對(duì)象傳遞給了引擎,引擎就收到了爬蟲文件給它發(fā)送的封裝了起始URL的請(qǐng)求對(duì)象。我們?cè)谂老x文件中發(fā)送的請(qǐng)求并沒有拿到響應(yīng)(沒有馬上拿到響應(yīng)),只有請(qǐng)求發(fā)送到服務(wù)器端,服務(wù)器端返回響應(yīng),才能拿到響應(yīng)。

  • 2 引擎拿到這個(gè)請(qǐng)求對(duì)象以后,又將請(qǐng)求對(duì)象發(fā)送給了調(diào)度器,隊(duì)列接受到的請(qǐng)求都放到了隊(duì)列當(dāng)中,隊(duì)列中可能存在多個(gè)請(qǐng)求對(duì)象,然后通過(guò)過(guò)濾器,去掉重復(fù)的請(qǐng)求

  • 3 調(diào)度器將過(guò)濾后的請(qǐng)求對(duì)象發(fā)送給了引擎,

  • 4 引擎將拿到的請(qǐng)求對(duì)象給了下載器

  • 5 下載器拿到請(qǐng)求后將請(qǐng)求拿到互聯(lián)網(wǎng)進(jìn)行數(shù)據(jù)下載

  • 6 互聯(lián)網(wǎng)將下載好的數(shù)據(jù)發(fā)送給下載器,此時(shí)下載好的數(shù)據(jù)是封裝在響應(yīng)對(duì)象中的

  • 7 下載器將響應(yīng)對(duì)象發(fā)送給引擎,引擎接收到了響應(yīng)對(duì)象,此時(shí)引擎中存儲(chǔ)了從互聯(lián)網(wǎng)中下載的數(shù)據(jù)。

  • 8 最終,這個(gè)響應(yīng)對(duì)象又由引擎給了spider(爬蟲文件),由parse方法中的response對(duì)象來(lái)接收,然后再parse方法中進(jìn)行解析數(shù)據(jù),此時(shí)可能解析到新的url,然后再次發(fā)請(qǐng)求;也可能解析到相關(guān)的數(shù)據(jù),然后將數(shù)據(jù)進(jìn)行封裝得到item,

  • 9 spider將item發(fā)送給引擎,

  • 10 引擎將item發(fā)送給管道。

其中,在引擎和下載中間還有一個(gè)下載器中間件,spider和引擎中間有爬蟲中間件,

爬蟲中間件

  • 攔截請(qǐng)求和響應(yīng),對(duì)請(qǐng)求和響應(yīng)進(jìn)行處理。

下載器中間件(重點(diǎn))

  • 可以攔截請(qǐng)求和響應(yīng)對(duì)象,請(qǐng)求和響應(yīng)交互的時(shí)候一定會(huì)經(jīng)過(guò)下載中間件,可以處理請(qǐng)求和響應(yīng)。
    • 攔截請(qǐng)求:
      • 篡改請(qǐng)求url
      • 偽裝請(qǐng)求頭信息UA Cookie
      • 設(shè)置請(qǐng)求代理(重點(diǎn))
    • 攔截響應(yīng)
      • 篡改響應(yīng)數(shù)據(jù)
    • 代理操作必須使用中間件才可以實(shí)現(xiàn)
      • process_exception:
        • request.meta[‘proxy’] = ‘http://ip:port’ # 設(shè)置代理

創(chuàng)建工程

創(chuàng)建一個(gè)爬蟲工程:scrapy startproject proName
進(jìn)入工程目錄創(chuàng)建爬蟲源文件:scrapy genspider spiderName www.xxx.com
執(zhí)行工程:scrapy crawl spiderName

對(duì)middlewares.py進(jìn)行精簡(jiǎn)并編輯

  • 只留下下載中間件的類容
from scrapy import signals from itemadapter import is_item, ItemAdapterclass MiddleproDownloaderMiddleware(object):# 攔截所有(正常&異常)的請(qǐng)求# 參數(shù): request就是攔截到的請(qǐng)求,spider就是爬蟲類實(shí)例化的對(duì)象def process_request(self, request, spider):print('process_request()')return None # or request# 攔截所有的響應(yīng)對(duì)象# 參數(shù):response攔截到的響應(yīng)對(duì)象,request響應(yīng)對(duì)象對(duì)應(yīng)的請(qǐng)求對(duì)象def process_response(self, request, response, spider):print('process_response()')return response# 攔截異常的請(qǐng)求# 參數(shù):request就是攔截到的發(fā)生異常的請(qǐng)求# 作用:想要將異常的請(qǐng)求進(jìn)行修正,將其變成正常的請(qǐng)求,然后對(duì)其進(jìn)行重新發(fā)送def process_exception(self, request, exception, spider):# 請(qǐng)求的ip被禁掉,該請(qǐng)求就會(huì)變成一個(gè)異常的請(qǐng)求request.meta['proxy'] = 'http://ip:port' # 設(shè)置代理print('process_exception()')return request #將異常的請(qǐng)求修正后進(jìn)行重新發(fā)送

總結(jié)

以上是生活随笔為你收集整理的17-爬虫之scrapy框架五大核心组件工作流程及下载中间件介绍04的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 男生女生操操操 | 日韩一级免费看 | 直接看毛片 | 久久精品噜噜噜成人88aⅴ | 日本黄色免费网址 | 亚洲制服一区二区 | 一区二区在线视频 | 国产亚洲成人精品 | 欧洲黄色片 | 久久精品久久久久久 | 国产精品国产三级国产aⅴ中文 | 久久高清 | 91超碰在线播放 | 性一交一乱一乱一视频 | 日日夜夜超碰 | 亚洲国产aⅴ精品一区二区 日韩黄色在线视频 | 久久一区av | 中文av免费观看 | av资源网在线 | 中文字幕成人在线视频 | 成人午夜免费在线观看 | 日日草天天干 | 麻豆精品国产传媒mv男同 | 中文字幕一二三四 | 99香蕉视频| 日韩视频第一页 | wwwxxoo| 精品国产乱码久久久久久婷婷 | 久久精品三级视频 | 狠狠干2021| 成人免费观看视频大全 | 穿扒开跪着折磨屁股视频 | 久久久久久无码精品人妻一区二区 | 欧美乱码精品一区二区 | 欧美一区二区二区 | 91蝌蚪| 三上悠亚在线一区 | 国产一区二区三区在线视频 | 久草成人在线视频 | 国语对白做受69 | 久久久久久久久久久久久久国产 | 欧美成人国产精品一区二区 | 自拍偷拍欧美激情 | 欧美精品在线免费观看 | 成人免费看高清电影在线观看 | 国产成人av一区二区 | 国产在线视频不卡 | 捆绑束缚调教 | 国产在线黄色 | 成年人网站免费看 | 99热99re6国产在线播放 | 欧美久久激情 | 成人精品免费在线观看 | 欧美mv日韩mv国产网站 | 亚洲午夜无码av毛片久久 | 激情四射婷婷 | 日韩免费在线视频 | 色插综合 | 欧美另类tv | 久久精品午夜 | 成人短视频在线播放 | 免费在线看视频 | 能在线观看的av网站 | 三级精品在线观看 | 亚洲人人在线 | 猛男被粗大男男1069 | 午夜影院污 | 在线观看日韩欧美 | 偷偷操不一样的久久 | 亚洲大片在线观看 | 懂色av色吟av夜夜嗨 | 91蜜桃臀久久一区二区 | 欧美一区二区三区四 | 欧美激情视频一区二区三区不卡 | 人人干在线视频 | 欧美成人图区 | a中文字幕 | 中文在线一区二区 | 国产操人 | 波多野结衣黄色片 | 狠狠干影视 | 欧美日韩毛片 | 午夜免费一级片 | 天天鲁一鲁摸一摸爽一爽 | 裸体男女树林做爰 | 寂寞人妻瑜伽被教练日 | 国产精选一区 | 北条麻妃一区二区三区免费 | 国精产品一区一区三区 | 国产91网址 | 韩国美女一区二区 | 日韩淫 | 亚洲午夜久久久久久久久久久 | 亚洲AV午夜精品 | 亚洲精品国产一区二 | 伊人福利在线 | 日本一级一片免费视频 | 国产原创在线 | xxxxxxxx黄色片 |