Python學習日記 Scrapy框架 1.Scrapy框架原理
一、介紹
Scrapy是一個開源和協作的框架,最初是爲了頁面抓取(網絡抓取)所設計的,使用它可以快速、簡單、可擴展的方式從網站中提取所需的數據。目前Scrapy的用途十分廣泛,可用作數據挖掘、檢測、自動化測試等領域,也可以應用在獲取API所返回的數據或者通用的網絡爬蟲。
Scrapy 是基於twisted框架開發而來,twisted是一個流行的事件驅動的python網絡框架。因此Scrapy使用了一種非阻塞(又名異步)的代碼來實現併發。整體框架圖如下:
scrapy框架分爲七大部分核心的組件
1、引擎(EGINE)
引擎負責控制系統所有組件之間的數據流,並在某些動作發生時觸發事件。有關詳細信息,請參見上面的數據流部分。
2、調度器(SCHEDULER)
用來接受引擎發過來的請求, 壓入隊列中, 並在引擎再次請求的時候返回. 可以想像成一個URL的優先級隊列, 由它來決定下一個要抓取的網址是什麼, 同時去除重複的網址
3、下載器(DOWLOADER)
用於下載網頁內容, 並將網頁內容返回給EGINE,下載器是建立在twisted這個高效的異步模型上的
4、爬蟲(SPIDERS)
SPIDERS是開發人員自定義的類,用來解析responses,並且提取items,或者發送新的請求
5、項目管道(ITEM PIPLINES)
在items被提取後負責處理它們,主要包括清理、驗證、持久化(比如存到數據庫)等操作
6、下載器中間件(Downloader Middlewares)
下載器中間件是在引擎及下載器之間的特定鉤子(specific hook),處理Downloader傳遞給引擎的response。 其提供了一個簡便的機制,通過插入自定義代碼來擴展Scrapy功能。更多內容請看 下載器中間件(Downloader Middleware) 。
7、爬蟲中間件(Spider Middlewares)
Spider中間件是在引擎及Spider之間的特定鉤子(specific hook),處理spider的輸入(response)和輸出(items及requests)。 其提供了一個簡便的機制,通過插入自定義代碼來擴展Scrapy功能。更多內容請看 Spider中間件(Middleware) 。
二、安裝
在cmd輸入pip install scrapy 或者 conda install scrapy(需要安裝anaconda)
注:pip下載速度過慢,可以通過pip源轉爲國內鏡像網站:
清華:https://pypi.tuna.tsinghua.edu.cn/simple/
阿里雲:http://mirrors.aliyun.com/pypi/simple/
中國科技大學 https://pypi.mirrors.ustc.edu.cn/simple/
華中理工大學:http://pypi.hustunique.com/
山東理工大學:http://pypi.sdutlinux.org/
豆瓣:http://pypi.douban.com/simple/
如果是臨時性的,可以使用pip參數 -i + 國內鏡像源地址 + 庫名,進行安裝:
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple/ scrapy