天天看點

python爬蟲之Scrapy架構(1)Scrapy 架構

Scrapy 架構

  • Scrapy是用純Python實作一個為了爬取網站資料、提取結構性資料而編寫的應用架構,用途非常廣泛。
  • 架構的力量,使用者隻需要定制開發幾個子產品就可以輕松的實作一個爬蟲,用來抓取網頁内容以及各種圖檔,非常之友善。
  • Scrapy 使用了 Twisted

    ['twɪstɪd]

    (其主要對手是Tornado)異步網絡架構來處理網絡通訊,可以加快我們的下載下傳速度,不用自己去實作異步架構,并且包含了各種中間件接口,可以靈活的完成各種需求。

Scrapy架構圖(綠線是資料流向):

python爬蟲之Scrapy架構(1)Scrapy 架構
  • Scrapy Engine(引擎)

    : 負責

    Spider

    ItemPipeline

    Downloader

    Scheduler

    中間的通訊,信号、資料傳遞等。
  • Scheduler(排程器)

    : 它負責接受

    引擎

    發送過來的Request請求,并按照一定的方式進行整理排列,入隊,當

    引擎

    需要時,交還給

    引擎

  • Downloader(下載下傳器)

    :負責下載下傳

    Scrapy Engine(引擎)

    發送的所有Requests請求,并将其擷取到的Responses交還給

    Scrapy Engine(引擎)

    ,由

    引擎

    交給

    Spider

    來處理,
  • Spider(爬蟲)

    :它負責處理所有Responses,從中分析提取資料,擷取Item字段需要的資料,并将需要跟進的URL送出給

    引擎

    ,再次進入

    Scheduler(排程器)

  • Item Pipeline(管道)

    :它負責處理

    Spider

    中擷取到的Item,并進行進行後期處理(詳細分析、過濾、存儲等)的地方.
  • Downloader Middlewares(下載下傳中間件)

    :你可以當作是一個可以自定義擴充下載下傳功能的元件。
  • Spider Middlewares(Spider中間件)

    :你可以了解為是一個可以自定擴充和操作

    引擎

    Spider

    中間

    通信

    的功能元件(比如進入

    Spider

    的Responses;和從

    Spider

    出去的Requests)

制作 Scrapy 爬蟲 一共需要4步:

  • 建立項目 (scrapy startproject xxx):建立一個新的爬蟲項目
  • 明确目标 (編寫items.py):明确你想要抓取的目标
  • 制作爬蟲 (spiders/xxspider.py):制作爬蟲開始爬取網頁
  • 存儲内容 (pipelines.py):設計管道存儲爬取内容