Python的Scrapy框架解析
一.為什么使用Scrapy框架?
Scrapy是一個(gè)快速、高層次的屏幕抓取和web抓取的框架,可用于數(shù)據(jù)挖掘、監(jiān)測(cè)和自動(dòng)化檢測(cè),任何人都可以根據(jù)需要去進(jìn)行修改。
二.Scrapy框架每個(gè)組件介紹
1.Scrapy引擎(Scrapy Engine
):負(fù)責(zé)控制數(shù)據(jù)流在系統(tǒng)的所以組件中的流動(dòng),并在相應(yīng)動(dòng)作發(fā)生時(shí)觸發(fā)事件。
2.調(diào)度器(Scheduler
):從引擎接受reques并將其入隊(duì),便于以后請(qǐng)求它們提供給引擎。
3.下載器(Downloader
):負(fù)責(zé)獲取網(wǎng)頁(yè)數(shù)據(jù)并且提供給引擎,然后提供給Spider。
4.Spiders
: 指Scrapy用戶編寫用于分析response并且提取item或額外跟進(jìn)的URL類人。每個(gè)Spider負(fù)責(zé)處理一些特定網(wǎng)站。
5.Item Pipeline
:負(fù)責(zé)處理被Spider提取出來的item。典型的處理有清潔、驗(yàn)證及持久化
6.下載器中間件(Downloader Middlewares
):指在引擎及下載器之間的特定鉤子(specific hook
),處理Downloader 傳遞給引擎的response。它提供一個(gè)簡(jiǎn)便的機(jī)制,通過插入自定義代碼來擴(kuò)展Scrapy功能。
7.Spiders中間件(Spider Middlewares
):指在引擎及Spider之間的特定鉤子(specific hook
),處理Spider 的輸入(response
)和輸出(items
及requests
)。它提供一個(gè)簡(jiǎn)便的機(jī)制,通過插入自定義代碼來擴(kuò)展Scrapy功能。
三.Scrapy框架工作原理
1.引擎向spider要URL
2.引擎將要爬取的URL給調(diào)度器
3.調(diào)度器會(huì)將URL生成請(qǐng)求對(duì)象放入指定的隊(duì)列中
4.從隊(duì)列中出隊(duì)一個(gè)請(qǐng)求
5.引擎將請(qǐng)求交給下載器進(jìn)行處理
6.下載器發(fā)送請(qǐng)求獲取互聯(lián)網(wǎng)數(shù)據(jù)
7.下載器將數(shù)據(jù)返回給引擎
8.引擎將數(shù)據(jù)再次給到spiders
9.spiders通過xpath解析該數(shù)據(jù),得到數(shù)據(jù)或URL
10.spiders將數(shù)據(jù)或URL給到引擎
11.引擎判斷該數(shù)據(jù)是URL還是數(shù)據(jù),交給管道處理,URL交給調(diào)度器處理
12.當(dāng)調(diào)度器里沒有任何數(shù)據(jù)之后,整個(gè)程序停止
下面是我根據(jù)工作原理畫的可以結(jié)合去看:
總結(jié)
本篇文章就到這里了,希望能夠給你帶來幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!
相關(guān)文章
Django drf使用Django自帶的用戶系統(tǒng)的注冊(cè)功能
本文主要介紹了Django drf使用Django自帶的用戶系統(tǒng)的注冊(cè)功能,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-02-02python輸入錯(cuò)誤密碼用戶鎖定實(shí)現(xiàn)方法
這篇文章主要介紹了python輸入錯(cuò)誤密碼用戶鎖定實(shí)現(xiàn)方法以及代碼實(shí)現(xiàn)過程,一起參考一下。2017-11-11Python對(duì)HTML轉(zhuǎn)義字符進(jìn)行反轉(zhuǎn)義的實(shí)現(xiàn)方法
這篇文章主要介紹了Python對(duì)HTML轉(zhuǎn)義字符進(jìn)行反轉(zhuǎn)義的實(shí)現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-04-04python實(shí)現(xiàn)不同文件夾下的函數(shù)相互調(diào)用
這篇文章主要介紹了python實(shí)現(xiàn)不同文件夾下的函數(shù)相互調(diào)用方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-08-08Vue的el-scrollbar實(shí)現(xiàn)自定義滾動(dòng)
本篇文章給大家分享了Vue的el-scrollbar實(shí)現(xiàn)自定義滾動(dòng)實(shí)現(xiàn)的過程和實(shí)例代碼,對(duì)此有需要的朋友可以參考下。2018-05-05Python基礎(chǔ)教程之NumPy庫(kù)的使用詳解
NumPy(Numerical Python)是一個(gè)用于處理數(shù)組的Python庫(kù),學(xué)習(xí)機(jī)器學(xué)習(xí)的過程中先學(xué)會(huì)使用NumPy是非常重要的,所以本文就給大家詳細(xì)介紹一下如何使用NumPy庫(kù),需要的小伙伴跟著小編一起來看看吧2023-07-07