亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

您的位置:首頁技術(shù)文章
文章詳情頁

詳解Python的爬蟲框架 Scrapy

瀏覽:3日期:2022-07-15 13:01:33

網(wǎng)絡(luò)爬蟲,是在網(wǎng)上進(jìn)行數(shù)據(jù)抓取的程序,使用它能夠抓取特定網(wǎng)頁的HTML數(shù)據(jù)。雖然我們利用一些庫開發(fā)一個(gè)爬蟲程序,但是使用框架可以大大提高效率,縮短開發(fā)時(shí)間。Scrapy是一個(gè)使用Python編寫的,輕量級的,簡單輕巧,并且使用起來非常的方便。

一、概述

下圖顯示了Scrapy的大體架構(gòu),其中包含了它的主要組件及系統(tǒng)的數(shù)據(jù)處理流程(綠色箭頭所示)。下面就來一個(gè)個(gè)解釋每個(gè)組件的作用及數(shù)據(jù)的處理過程(注:圖片來自互聯(lián)網(wǎng))。

詳解Python的爬蟲框架 Scrapy

二、組件

1、Scrapy Engine(Scrapy引擎)

Scrapy引擎是用來控制整個(gè)系統(tǒng)的數(shù)據(jù)處理流程,并進(jìn)行事務(wù)處理的觸發(fā)。更多的詳細(xì)內(nèi)容可以看下面的數(shù)據(jù)處理流程。

2、Scheduler(調(diào)度)

調(diào)度程序從Scrapy引擎接受請求并排序列入隊(duì)列,并在Scrapy引擎發(fā)出請求后返還給他們。

3、Downloader(下載器)

下載器的主要職責(zé)是抓取網(wǎng)頁并將網(wǎng)頁內(nèi)容返還給蜘蛛( Spiders)。

4、Spiders(蜘蛛)

蜘蛛是有Scrapy用戶自己定義用來解析網(wǎng)頁并抓取制定URL返回的內(nèi)容的類,每個(gè)蜘蛛都能處理一個(gè)域名或一組域名。換句話說就是用來定義特定網(wǎng)站的抓取和解析規(guī)則。

蜘蛛的整個(gè)抓取流程(周期)是這樣的:

首先獲取第一個(gè)URL的初始請求,當(dāng)請求返回后調(diào)取一個(gè)回調(diào)函數(shù)。第一個(gè)請求是通過調(diào)用start_requests()方法。該方法默認(rèn)從start_urls中的Url中生成請求,并執(zhí)行解析來調(diào)用回調(diào)函數(shù)。

在回調(diào)函數(shù)中,你可以解析網(wǎng)頁響應(yīng)并返回項(xiàng)目對象和請求對象或兩者的迭代。這些請求也將包含一個(gè)回調(diào),然后被Scrapy下載,然后有指定的回調(diào)處理。

在回調(diào)函數(shù)中,你解析網(wǎng)站的內(nèi)容,同程使用的是Xpath選擇器(但是你也可以使用BeautifuSoup, lxml或其他任何你喜歡的程序),并生成解析的數(shù)據(jù)項(xiàng)。

最后,從蜘蛛返回的項(xiàng)目通常會進(jìn)駐到項(xiàng)目管道。

5、Item Pipeline(項(xiàng)目管道)

項(xiàng)目管道的主要責(zé)任是負(fù)責(zé)處理有蜘蛛從網(wǎng)頁中抽取的項(xiàng)目,他的主要任務(wù)是清晰、驗(yàn)證和存儲數(shù)據(jù)。當(dāng)頁面被蜘蛛解析后,將被發(fā)送到項(xiàng)目管道,并經(jīng)過幾個(gè)特定的次序處理數(shù)據(jù)。每個(gè)項(xiàng)目管道的組件都是有一個(gè)簡單的方法組成的Python類。他們獲取了項(xiàng)目并執(zhí)行他們的方法,同時(shí)他們還需要確定的是是否需要在項(xiàng)目管道中繼續(xù)執(zhí)行下一步或是直接丟棄掉不處理。

項(xiàng)目管道通常執(zhí)行的過程有:

清洗HTML數(shù)據(jù)驗(yàn)證解析到的數(shù)據(jù)(檢查項(xiàng)目是否包含必要的字段)檢查是否是重復(fù)數(shù)據(jù)(如果重復(fù)就刪除)將解析到的數(shù)據(jù)存儲到數(shù)據(jù)庫中

6、Downloader middlewares(下載器中間件)

下載中間件是位于Scrapy引擎和下載器之間的鉤子框架,主要是處理Scrapy引擎與下載器之間的請求及響應(yīng)。它提供了一個(gè)自定義的代碼的方式來拓展Scrapy的功能。下載中間器是一個(gè)處理請求和響應(yīng)的鉤子框架。他是輕量級的,對Scrapy盡享全局控制的底層的系統(tǒng)。

7、Spider middlewares(蜘蛛中間件)

蜘蛛中間件是介于Scrapy引擎和蜘蛛之間的鉤子框架,主要工作是處理蜘蛛的響應(yīng)輸入和請求輸出。它提供一個(gè)自定義代碼的方式來拓展Scrapy的功能。蛛中間件是一個(gè)掛接到Scrapy的蜘蛛處理機(jī)制的框架,你可以插入自定義的代碼來處理發(fā)送給蜘蛛的請求和返回蜘蛛獲取的響應(yīng)內(nèi)容和項(xiàng)目。

8、Scheduler middlewares(調(diào)度中間件)

調(diào)度中間件是介于Scrapy引擎和調(diào)度之間的中間件,主要工作是處從Scrapy引擎發(fā)送到調(diào)度的請求和響應(yīng)。他提供了一個(gè)自定義的代碼來拓展Scrapy的功能。

三、數(shù)據(jù)處理流程

Scrapy的整個(gè)數(shù)據(jù)處理流程有Scrapy引擎進(jìn)行控制,其主要的運(yùn)行方式為:

1.引擎打開一個(gè)域名,時(shí)蜘蛛處理這個(gè)域名,并讓蜘蛛獲取第一個(gè)爬取的URL。

2.引擎從蜘蛛那獲取第一個(gè)需要爬取的URL,然后作為請求在調(diào)度中進(jìn)行調(diào)度。

3.引擎從調(diào)度那獲取接下來進(jìn)行爬取的頁面。

4.調(diào)度將下一個(gè)爬取的URL返回給引擎,引擎將他們通過下載中間件發(fā)送到下載器。

5.當(dāng)網(wǎng)頁被下載器下載完成以后,響應(yīng)內(nèi)容通過下載中間件被發(fā)送到引擎。

6.引擎收到下載器的響應(yīng)并將它通過蜘蛛中間件發(fā)送到蜘蛛進(jìn)行處理。

7.蜘蛛處理響應(yīng)并返回爬取到的項(xiàng)目,然后給引擎發(fā)送新的請求。

8.引擎將抓取到的項(xiàng)目項(xiàng)目管道,并向調(diào)度發(fā)送請求。

9.系統(tǒng)重復(fù)第二部后面的操作,直到調(diào)度中沒有請求,然后斷開引擎與域之間的聯(lián)系。

四、驅(qū)動器

Scrapy是由Twisted寫的一個(gè)受歡迎的Python事件驅(qū)動網(wǎng)絡(luò)框架,它使用的是非堵塞的異步處理。

以上就是詳解Python的爬蟲框架 Scrapy的詳細(xì)內(nèi)容,更多關(guān)于Python 爬蟲框架 Scrapy的資料請關(guān)注好吧啦網(wǎng)其它相關(guān)文章!

標(biāo)簽: Python 編程
相關(guān)文章:
主站蜘蛛池模板: 免费观看一级欧美在线视频 | 91成人在线视频 | 91视频免费观看 | 亚洲精品国产摄像头 | 一级特黄录像实干片 | 亚洲国产精品久久久久秋霞小 | 三级黄色在线视频 | 九一视频在线 | 国产精品第 | 玖玖精品在线观看 | 91免费在线播放 | 正在播真实出轨炮对白 | 一级特黄aaa大片在线观看 | 永久免费看黄 | 26uuu天天夜夜综合 | 欧美另类偷自拍视频二区 | 久久这里只有精品首页 | 亚洲欧洲日产国码在线观看 | 青青久操视频 | 国产福利一区二区三区视频在线 | 国产精品成人一区二区1 | 久久在线视频免费观看 | 亚洲一级毛片中文字幕 | 欧美一级黄色录像片 | 麻豆果冻国产91在线极品 | 国产精品免费福利 | 国产毛片视频网站 | 亚洲成网777777国产精品 | 天天影视色香欲综合网网站麻豆 | 性刺激欧美三级在线观看 | 国产成人v爽在线免播放观看 | 五月国产综合视频在线观看 | 黄色片免费播放 | 成人在线免费 | 国产一区二区三区在线电影 | 国产成人综合网亚洲欧美在线 | 亚洲国产成人精彩精品 | 成人毛片国产a | 成人免费大片黄在线观看com | 日韩欧美卡一卡二卡新区 | 99久久精品自在自看国产 |