scrapy框架解讀--深入理解爬蟲原理


scrapy框架結構圖:

組成部分介紹:

  • Scrapy Engine: 
    負責組件之間數據的流轉,當某個動作發生時觸發事件

  • Scheduler: 
    接收requests,並把他們入隊,以便后續的調度

  • Downloader: 
    負責抓取網頁,並傳送給引擎,之后抓取結果將傳給spider

  • Spiders: 
    用戶編寫的可定制化的部分,負責解析response,產生items和URL

  • Item Pipeline: 
    負責處理item,典型的用途:清洗、驗證、持久化

  • Downloader middlewares: 
    位於引擎和下載器之間的一個鈎子,處理傳送到下載器的requests和傳送到引擎的response(若需要在Requests到達Downloader之前或者是responses到達spiders之前做一些預處理,可以使用該中間件來完成)

  • Spider middlewares: 
    位於引擎和抓取器之間的一個鈎子,處理抓取器的輸入和輸出 
    (在spiders產生的Items到達Item Pipeline之前做一些預處理或response到達spider之前做一些處理)

Scrapy中的數據流:

  • Scrapy中的數據流由執行引擎控制,其過程如下: 
    1. 引擎打開一個網站(open a domain),找到處理該網站的spider,並向該spider請求第一個要爬取的url(s);
    2. 引擎從spider中獲取到第一個要爬取的url並在調度器(scheduler)以requests調度;
    3. 引擎向調度器請求下一個要爬取的url;
    4. 調度器返回下一個要爬取的url給引擎,引擎將url通過下載器中間件(請求requests方向)轉發給下載器(Downloader);
    5. 一旦頁面下載完畢,下載器生成一個該頁面的responses,並將其通過下載器中間件(返回responses方向)發送給引擎;
    6. 引擎從下載器中接收到responses並通過spider中間件(輸入方向)發送給spider處理;
    7. spider處理responses並返回爬取到的Item及(跟進的)新的resquests給引擎
    8. 引擎將(spider返回的)爬取到的Item給Item Pipeline,將(spider返回的)requests給調度器;
    9. (從第二部)重復直到(調度器中沒有更多的request)引擎關閉該網站

中間件的編寫:

    • down loader middle ware – 查看文檔151頁

    • spider middle wares – 查看文檔162頁


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM