Practice

1、簡介

Scrapy是一個爲了爬取網站數據,提取結構性數據而編寫的應用框架。 其能夠應用在數據挖掘,信息處理或存儲歷史數據等一系列的程序中。
其最初是爲了頁面抓取 (更確切來講, 網絡抓取 )所設計的, 也能夠應用在獲取API所返回的數據(例如 Amazon Associates Web Services ) 或者通用的網絡爬蟲。Scrapy用途普遍,能夠用於數據挖掘、監測和自動化測試。網絡

requests本質就是就是發送http請求,若是在requests基礎上作個封裝,我去某個網站或者某個域名一直去發送請求找到全部的url,下載東西的請求在寫個方法源源不斷的下載東西!這樣咱們就寫了個框架。架構

3、結構分析

Scrapy 使用了 Twisted異步網絡庫來處理網絡通信。總體架構大體以下:框架

一、Scrapy組件

Scrapy主要包括瞭如下組件:dom

一、引擎(Scrapy)
用來處理整個系統的數據流處理, 觸發事務(框架核心)異步

二、調度器(Scheduler)
用來接受引擎發過來的請求, 壓入隊列中, 並在引擎再次請求的時候返回. 能夠想像成一個URL(抓取網頁的網址或者說是連接)的優先隊列, 由它來決定下一個要抓取的網址是什麼, 同時去除重複的網址ide

三、下載器(Downloader)
用於下載網頁內容, 並將網頁內容返回給蜘蛛(Scrapy下載器是創建在twisted這個高效的異步模型上的)測試

四、爬蟲(Spiders)
爬蟲是主要幹活的, 用於從特定的網頁中提取本身須要的信息, 即所謂的實體(Item)。用戶也能夠從中提取出連接,讓Scrapy繼續抓取下一個頁面網站

五、項目管道(Pipeline)
負責處理爬蟲從網頁中抽取的實體,主要的功能是持久化實體、驗證明體的有效性、清除不須要的信息。當頁面被爬蟲解析後,將被髮送到項目管道,並通過幾個特定的次序處理數據。url

六、下載器中間件(Downloader Middlewares)
位於Scrapy引擎和下載器之間的框架,主要是處理Scrapy引擎與下載器之間的請求及響應。spa

七、爬蟲中間件(Spider Middlewares)
介於Scrapy引擎和爬蟲之間的框架,主要工做是處理蜘蛛的響應輸入和請求輸出。

八、調度中間件(Scheduler Middewares)
介於Scrapy引擎和調度之間的中間件,從Scrapy引擎發送到調度的請求和響應。

二、Scrapy數據流

Scrapy中的數據流由執行引擎控制,其過程以下:

1)引擎打開一個網站(open a domain),找處處理該網站的Spider並向該spider請求第一個要爬取的URL(s)。
2)引擎從Spider中獲取到第一個要爬取的URL並在調度器(Scheduler)以Request調度。
3)引擎向調度器請求下一個要爬取的URL。
4)調度器返回下一個要爬取的URL給引擎,引擎將URL經過下載中間件(請求(request)方向)轉發給下載器(Downloader)。
5)一旦頁面下載完畢,下載器生成一個該頁面的Response,並將其經過下載中間件(返回(response)方向)發送給引擎。
6)引擎從下載器中接收到Response並經過Spider中間件(輸入方向)發送給Spider處理。
7)Spider處理Response並返回爬取到的Item及(跟進的)新的Request給引擎。
8)引擎將(Spider返回的)爬取到的Item給Item Pipeline,將(Spider返回的)Request給調度器。
9)(從第二步)重複直到調度器中沒有更多地request,引擎關閉該網站。

4、範例分析

一、

(1)

(2)

(3)

二、

(1)

(2)

(3)

三、

(1)

(2)

(3)

四、

(1)

(2)

(3)

5、功能運用

一、

(1)

(2)

(3)

二、

(1)

(2)

(3)

三、

(1)

(2)

(3)

四、

(1)

(2)

(3)

6、小結

一、

(1)

(2)

(3)

二、

(1)

(2)

(3)

三、

(1)

(2)

(3)

四、

(1)

(2)

(3)

1、簡介
2、定義
3、結構分析
4、範例分析
5、功能運用
6、小結

相關文章
相關標籤/搜索