Python爬蟲 --- 2.1 Scrapy 爬蟲框架的安裝與基本介紹

原文鏈接:https://www.fkomm.cn/article/2018/8/1/26.html

這次介紹一個及其強大的爬蟲框架---Scrapy,Scrapy由 Python 編寫,是一個快速、高層次的屏幕抓取和web抓取框架,用於抓取web站點並從頁面中提取結構化的數據。Scrapy用途廣泛,可以用於數據挖掘、監測和自動化測試。

Srapy框架的安裝:

無論是在windows還是mac以及linux下,都可以是用pip工具進行快速安裝:

$ pip install scrapy

這裏推薦一個非常好用的Python調試shell:ipython。

ipython是一個python的交互式shell,比默認的python shell好用得多,支持變量自動補全,自動縮進,支持bash shell命令,內置了許多很有用的功能和函數。學習ipython將會讓我們以一種更高的效率來使用python。同時它也是利用Python進行科學計算和交互可視化的一個最佳的平臺。

我們依舊用pip工具進行安裝:

$ pip install ipython

Scrapy框架的基本介紹:

首先,我們得明白一點,Scrapy不是一個功能函數庫,而是是用純Python實現一個爲了爬取網站數據、提取結構性數據而編寫的應用框架。簡單的說,他是一個半成品,可以幫助用戶簡單快速的部署一個專業的網絡爬蟲。如果說前面我們寫的定製bs4爬蟲是“手動擋”,那Scrapy就相當於“半自動檔”的車。

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

框架的力量,用戶只需要定製開發幾個模塊就可以輕鬆的實現一個爬蟲,用來抓取網頁內容以及各種圖片,非常之方便。

Scrapy框架結構:

首先來一張框架整體的圖:

Python爬蟲 --- 2.1 Scrapy 爬蟲框架的安裝與基本介紹

從圖中我們可以清楚的看到,整個框架一共分爲五個部分:

  • SPIDERS
  • ITEM PIPELINES
  • DOWNLOADER
  • SCHEDULER
  • ENGIINE

這五個部分互相協作,共同完成了整個爬蟲項目的工作。下面我們來一個一個介紹。

SPIDERS:

Spiders這個模塊就是整個爬蟲項目中需要我們手動實現的核心部分,就是類似我們之前寫的get_content函數部分,最主要的功能是 解析網頁內容、產生爬取項、產生額外的爬去請求。

ITEM PIPELINES:

這個模塊也是需要我們手動實現的,他的主要功能是將我們爬取篩選完畢的數據寫入文本,數據庫等等。總之就是一個“本地化”的過程。

DOWNLOADER:

這個模塊,是Scrapy幫我們做好的,不需要我們自己編寫,直接拿來用就行,其主要功能就是從網上獲取網頁內容,類似於我們寫的get_html函數,當然,比我們自己寫的這個簡單的函數要強大很多

SCHEDULER:

這個模塊對所有的爬取請求,進行調度管理,同樣也是不需要我們寫的模塊。通過簡單的配置就能達到更加多線程,併發處理等等強大功能。

ENGIINE

這個模塊相當於整個框架的控制中心,他控制着所有模塊的數據流交換,並根據不同的條件出發相對應的事件,同樣,這個模塊也是不需要我們編寫的。
Scrapy框架的數據流動:

先上一張圖:

Python爬蟲 --- 2.1 Scrapy 爬蟲框架的安裝與基本介紹

說了各個模塊的作用,那麼整個項目跑起來的時候,數據到底是怎麼運作的呢? 上圖的數字代表數據的流向,解釋如下:

  1. Engine從Spider處獲得爬取請求(request)
  2. Engine將爬取請求轉發給Scheduler,調度指揮進行下一步
  3. Engine從Scheduler出獲得下一個要爬取的請求
  4. Engine將爬取請求通過中間件發給Downloader
  5. 爬取網頁後後,downloader返回一個Response給engine
  6. Engine將受到的Response返回給spider處理
  7. Spider處理響應後,產生爬取項和新的請求給engine
  8. Engine將爬取項發送給ITEM PIPELINE(寫出數據)
  9. Engine將會爬取請求再次發給Scheduler進行調度(下一個週期的爬取)

系統化入門

Scrapy是一個很強大的爬蟲框架,用起來很方便,但是要定製高級的功能就不是那麼簡單的了。這裏只是簡單的介紹了一下框架的基本原理,但具體如何使用不是一時半會能夠說完的,後面我會在例子中一一展現這個框架的高級功能。

如果你想要更加系統化的學習理解這個框架,可以看看Scrapy的官方文檔:[Scrapy 1.5文檔]
(https://doc.scrapy.org/en/latest/),會讓你受益匪淺的!!!!

                 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章