Python的Scrapy框架解析
一.為什么使用Scrapy框架?
Scrapy是一個(gè)快速、高層次的屏幕抓取和web抓取的框架,可用于數(shù)據(jù)挖掘、監(jiān)測和自動(dòng)化檢測,任何人都可以根據(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ì),便于以后請求它們提供給引擎。
3.下載器(Downloader):負(fù)責(zé)獲取網(wǎng)頁數(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è)簡便的機(jī)制,通過插入自定義代碼來擴(kuò)展Scrapy功能。
7.Spiders中間件(Spider Middlewares):指在引擎及Spider之間的特定鉤子(specific hook),處理Spider 的輸入(response)和輸出(items及requests)。它提供一個(gè)簡便的機(jī)制,通過插入自定義代碼來擴(kuò)展Scrapy功能。
三.Scrapy框架工作原理

1.引擎向spider要URL
2.引擎將要爬取的URL給調(diào)度器
3.調(diào)度器會(huì)將URL生成請求對象放入指定的隊(duì)列中
4.從隊(duì)列中出隊(duì)一個(gè)請求
5.引擎將請求交給下載器進(jìn)行處理
6.下載器發(fā)送請求獲取互聯(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)文章
Python?logging日志模塊的概念與實(shí)踐講解
本文通過具體的代碼示例為大家解釋了如何高效地使用logging模塊進(jìn)行日志記錄,以及如何避免常見的陷阱,希望可以幫助大家更好地掌握這個(gè)強(qiáng)大的工具2023-07-07
如何向scrapy中的spider傳遞參數(shù)的幾種方法
這篇文章主要介紹了如何向scrapy中的spider傳遞參數(shù)的幾種方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-11-11
Python 運(yùn)行.py文件和交互式運(yùn)行代碼的區(qū)別詳解
這篇文章主要介紹了Python 運(yùn)行.py文件和交互式運(yùn)行代碼的區(qū)別詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-07-07
python讀文件保存到字典,修改字典并寫入新文件的實(shí)例
下面小編就為大家分享一篇python讀文件保存到字典,修改字典并寫入新文件的實(shí)例,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-04-04
error?conda:ProxyError:Conda?cannot?proceed?due?to?an?
這篇文章主要為大家介紹了error conda:ProxyError:Conda cannot proceed due to an error in your proxy configuration解決方法,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-07-07
python實(shí)現(xiàn)logistic分類算法代碼
今天小編就為大家分享一篇python實(shí)現(xiàn)logistic分類算法代碼,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-02-02

