爬蟲之scrapy工做流程

Scrapy是什麼?數據庫

scrapy 是一個爲了爬取網站數據,提取結構性數據而編寫的應用框架,咱們只須要實現少許代碼,就可以快速的抓取到數據內容。Scrapy 使用了 Twisted['twɪstɪd](其主要對手是Tornado)異步網絡框架來處理網絡通信,能夠加快咱們的下載速度,不用本身去實現異步框架,而且包含了各類中間件接口,能夠靈活的完成各類需求。網絡

異步與非阻塞的區別:異步:調用在發出以後,這個調用就直接返回,無論有無結果。框架

                                    非阻塞:關注的是程序在等待調用結果(消息,返回值)時的狀態,指在不能馬上獲得結果以前,該調用不會阻塞當前線程。異步

 

scrapy詳細工做流程:
  1.首先Spiders(爬蟲)將須要發送請求的url(requests)經ScrapyEngine(引擎)交給Scheduler(調度器)。scrapy

  2.Scheduler(排序,入隊)處理後,經ScrapyEngine,DownloaderMiddlewares(可選,主要有User_Agent, Proxy代理)交給Downloader。ide

  3.Downloader向互聯網發送請求,並接收下載響應(response)。將響應(response)經ScrapyEngine,SpiderMiddlewares(可選)交給Spiders。     網站

  4.Spiders處理response,提取數據並將數據經ScrapyEngine交給ItemPipeline保存(能夠是本地,能夠是數據庫)。url

  5.提取url從新經ScrapyEngine交給Scheduler進行下一個循環。直到無Url請求程序中止結束。

spa

 

Scrapy主要包括瞭如下組件:線程

  1. 引擎(Scrapy): 用來處理整個系統的數據流處理, 觸發事務(框架核心)
  2. 調度器(Scheduler): 用來接受引擎發過來的請求, 壓入隊列中, 並在引擎再次請求的時候返回. 能夠想像成一個URL(抓取網頁的網址或者說是連接)的優先隊列, 由它來決定下一個要抓取的網址是什麼, 同時去除重複的網址
  3. 下載器(Downloader): 用於下載網頁內容, 並將網頁內容返回給蜘蛛(Scrapy下載器是創建在twisted這個高效的異步模型上的)
  4. 爬蟲(Spiders): 爬蟲是主要幹活的, 用於從特定的網頁中提取本身須要的信息, 即所謂的實體(Item)。用戶也能夠從中提取出連接,讓Scrapy繼續抓取下一個頁面
  5. 項目管道(Pipeline): 負責處理爬蟲從網頁中抽取的實體,主要的功能是持久化實體、驗證明體的有效性、清除不須要的信息。當頁面被爬蟲解析後,將被髮送到項目管道,並通過幾個特定的次序處理數據。
  6. 下載器中間件(Downloader Middlewares): 位於Scrapy引擎和下載器之間的框架,主要是處理Scrapy引擎與下載器之間的請求及響應。
  7. 爬蟲中間件(Spider Middlewares): 介於Scrapy引擎和爬蟲之間的框架,主要工做是處理蜘蛛的響應輸入和請求輸出。
  8. 調度中間件(Scheduler Middewares): 介於Scrapy引擎和調度之間的中間件,從Scrapy引擎發送到調度的請求和響應。
相關文章
相關標籤/搜索