更新時(shí)間:2021-06-18 來(lái)源:黑馬程序員 瀏覽量:
學(xué)習(xí)Scrapy框架,從理解它的架構(gòu)開(kāi)始。
Scrapy框架
從上圖可知,Scrapy框架主要包含以下組件:
(1) Scrapy Engine (引擎) :負(fù)責(zé)Spiders、Item Pipeline、Downloader、Scheduler之間的通信,包括信號(hào)和數(shù)據(jù)的傳遞等。
(2) Scheduler (調(diào)度器):負(fù)責(zé)接收引擎發(fā)送過(guò)來(lái)的Request請(qǐng)求,并按照一定的方式進(jìn)行整理排列和人隊(duì),當(dāng)引擎需要時(shí),交還給引擎。
(3) Downloader (下載器) :負(fù)責(zé)下載Scrapy Engine 發(fā)送的所有Requests (請(qǐng)求) ;并將其獲取到的Responses (響應(yīng))交還給Scrapy Engine,由Scrapy Engine交給Spider來(lái)處理。
(4) Spiders (爬蟲(chóng)) :負(fù)責(zé)處理所有Responses,從中分析提取數(shù)據(jù),獲取Item字段需要的數(shù)據(jù),并將需要跟進(jìn)的URL提交給引擎,再次進(jìn)人Scheduler (調(diào)度器)。
(5) Item Pipeline (管道):負(fù)責(zé)處理Spiders中獲取到的Item數(shù)據(jù),并進(jìn)行后期處理(詳細(xì)分析、過(guò)濾、存儲(chǔ)等)。
(6) Downloader Middlewares (下載中間件):是一個(gè)可以自定義擴(kuò)展下載功能的組件。
(7) Spider Middlewares (Spider中間件):是一個(gè)可以自定義擴(kuò)展Scrapy Engine和Spiders中間通信的功能組件(例如,進(jìn)人Spiders的Responses和從Spiders出去的Requests)。
Scrapy的這些組件通力合作,共同完成整個(gè)爬取任務(wù)。架構(gòu)圖中的箭頭是數(shù)據(jù)的流動(dòng)方向,首先從初始URL開(kāi)始,Scheduler 會(huì)將其交給Downloader進(jìn)行下載,下載之后會(huì)交給Spiders進(jìn)行分析。Spiders分析出來(lái)的結(jié)果有兩種:一種是需要進(jìn)一步爬取的鏈接,例如之前分析的“下一頁(yè)”的鏈接,這些會(huì)被傳回Scheduler;另一種是需要保存的數(shù)據(jù),它們被送到Item Pipeline,這是對(duì)數(shù)據(jù)進(jìn)行后期處理(詳細(xì)分析、過(guò)濾、存儲(chǔ)等)的地方。另外,在數(shù)據(jù)流動(dòng)的通道里還可以安裝各種中間件,進(jìn)行必要的處理。
猜你喜歡:
Python爬蟲(chóng)難學(xué)嗎?學(xué)會(huì)需要多久?
網(wǎng)絡(luò)爬蟲(chóng)之通用爬蟲(chóng)和聚焦爬蟲(chóng)
Python爬蟲(chóng)支持的網(wǎng)頁(yè)解析技術(shù)有哪些?
三種分布式爬蟲(chóng)策略的優(yōu)缺點(diǎn)
【AI設(shè)計(jì)】北京143期畢業(yè)僅36天,全員拿下高薪offer!黑馬AI設(shè)計(jì)連續(xù)6期100%高薪就業(yè)
2025-09-19【跨境電商運(yùn)營(yíng)】深圳跨境電商運(yùn)營(yíng)畢業(yè)22個(gè)工作日,就業(yè)率91%+,最高薪資達(dá)13500元
2025-09-19【AI運(yùn)維】鄭州運(yùn)維1期就業(yè)班,畢業(yè)14個(gè)工作日,班級(jí)93%同學(xué)已拿到Offer, 一線(xiàn)均薪資 1W+
2025-09-19【AI鴻蒙開(kāi)發(fā)】上海校區(qū)AI鴻蒙開(kāi)發(fā)4期5期,距離畢業(yè)21天,就業(yè)率91%,平均薪資14046元
2025-09-19【AI大模型開(kāi)發(fā)-Python】畢業(yè)33個(gè)工作日,就業(yè)率已達(dá)到94.55%,班均薪資20763元
2025-09-19【AI智能應(yīng)用開(kāi)發(fā)-Java】畢業(yè)當(dāng)天offer率91%,薪資1W+占比54.2%,班級(jí)均薪12k+
2025-09-19