框架
以下是scrapy的框架,綠色箭頭表示數(shù)據(jù)流向嫡秕。
timg.jpeg
一渴语、詳細(xì)介紹:
scrapy Engine
爬蟲引擎負(fù)責(zé)控制數(shù)據(jù)流在系統(tǒng)中的所有組件中流動(dòng),并在相應(yīng)動(dòng)作發(fā)生時(shí)觸發(fā)事件昆咽。
調(diào)度器(Scheduler)
調(diào)度器從引擎接受request并將他們?nèi)腙?duì)驾凶,以便之后引擎請(qǐng)求他們時(shí)提供給引擎。
Spiders
Spiders是scrapy用戶編寫用于分析response并提取item或額外跟進(jìn)的url的類掷酗。
Item Pipeline
Item Pipeline負(fù)責(zé)處理被spider提取出來的item调违。典型的處理有清理、驗(yàn)證和保存數(shù)據(jù)泻轰。
下載器中間件(Downloader middlewares)
下載中間件是在引擎及下載器中間的特定鉤子翰萨,處理Downloader傳遞給引擎的response。
Spider中間件(Spider middlewares)
Spider 中間件是在引擎及Spider之間的特定鉤子糕殉,處理spider的輸入(reponse)和輸出(items及requests)亩鬼。
二、數(shù)據(jù)流(Data flow)
- 引擎打開一個(gè)網(wǎng)站阿蝶,找到處理該網(wǎng)站的spider并向該spider請(qǐng)求第一個(gè)要爬取的URL雳锋。
- 引擎從spider中獲取到第一個(gè)要爬取的URL并在調(diào)度器(scheduler)以request調(diào)度。
- 引擎向調(diào)度器請(qǐng)求下一個(gè)要爬取的URL羡洁。
- 調(diào)度器返回下一個(gè)要爬取的URL給引擎玷过,引擎將URL通過下載中間件(請(qǐng)求request方向)轉(zhuǎn)發(fā)給下載器。
- 頁面下載完畢筑煮,下載器生成一個(gè)該頁面的response辛蚊,并將其通過下載中間件(返回方向)發(fā)給引擎。
- 引擎從下載器中接受到response并通過spider中間件發(fā)送給spider處理真仲。
- spider處理response并返回爬取的item和新的reponse給引擎袋马。
- 引擎將spider返回的item給item pipeline,將spider返回的resquest給調(diào)度器秸应。
- (從第二步)重復(fù)直到調(diào)度器中沒有request虑凛。