01.scrapy入門
阿新 • • 發佈:2020-06-24
Scrapy快速入門
Scrapy是一個為了爬取網站資料,提取結構性資料而編寫的應用框架,它使用Twisted這個非同步網路庫來處理網路通訊,架構清晰,並且包含了各種中介軟體介面,可以靈活的完成各種需求。個人認為Scrapy是Python世界裡面最強大的爬蟲框架,沒有之一,它比BeautifulSoup更加完善,BeautifulSoup可以說是輪子,而Scrapy則是車子,不需要你關注太多細節,Scrapy不僅支援Python2.7,Python3也支援。
- scrapy是框架,類似於車子,會開車。
- 採用非同步框架,實現高效率的網路採集。
- 最強大的框架,沒有之一。
安裝和檔案:
- 安裝:通過
pip install Scrapy
- Scrapy官方檔案:http://doc.scrapy.org/en/latest
- Scrapy中文檔案:https://www.osgeo.cn/scrapy/
注意:
1 在ubuntu
上安裝scrapy
之前,需要先安裝以下依賴:
sudo apt-get install python-dev python-pip libxml2-dev libxslt-dev zliblg-dev libffi-dev libssl-dev
,然後在通過pip install scrapy
安裝。2 如果在
windows
系統下,提示這個錯誤ModuleNotFoundError:No module named 'win32api'
,那麼使用以下命令可以解決:
pip install pypiwin32
或pip install pywin32
遇到問題
VC++14.0 Twisted
解決辦法:離線安裝twisted
https://www.lfd.uci.edu/~gohlke/pythonlibs/#twisted
pip install xxx.whl [twsited.whl的路徑]
安裝完成執行
scrapy bencn
執行測試
Scrapy原理
Scrapy主要包含以下元件:
- 引擎:處理整個系統的資料流,觸發事務(框架核心)
- 排程器:用來接收引擎發過來的請求,壓入佇列中,並在引擎在此請求的時候返回,由它來決定下一個要抓取的網址是什麼,同時去除重複的網址。
- 下載器:用於下載網頁內容,並將網頁內容返回給蜘蛛。
- Scrapy下載器是建立在Twisted這個搞笑的非同步模型上的。
- 爬蟲:爬蟲主要是幹活的,用於從特定的網頁中提取自己需要的資訊,即所謂的實體。使用者也可以從中提取出連結,讓Scrapy繼續抓取下一個頁面。
- 專案管道:負責處理爬蟲從網頁中抽取的實體,主要的功能是持久化實體、驗證實體的有效性、清楚不需要的資訊。當頁面被爬蟲解析後,將被髮送到專案管道,並經過幾個特定的次序處理資料。
- 下載器中介軟體:位於Scrapy引擎和下載器直接的框架,主要是處理Scrapy引擎與下載器直接的請求及響應。
- 爬蟲中介軟體:介於Scrapy引擎和爬蟲直接的框架,主要工作是處理蜘蛛的響應輸入和請求輸出。
- 排程中介軟體:介於Scrapy引擎和排程器直接的中介軟體,從Scrapy引擎傳送到排程的請求和響應。
Scrapy的執行流程大概如下
- 引擎從排程器中取出一個連結(URL)用於接下來的抓取
- 引擎把URL封裝成一個請求(Request)傳給下載器
- 下載器把資源下載下來,並封裝成應答包(Response)
- 爬蟲解析Response
- 解析出實體(Item),則交給實體管道進行進一步的處理
- 解析出的是連結(URL),則把URL交給排程器等待抓取
建立專案
Windows下,開啟命令提示符視窗,進入到打算儲存程式碼的目錄中,使用下面的命令建立一個scrapy專案
scrapy startproject 專案名
專案結構
scrapy.cfg
:專案的配置檔案- 專案名/:該專案的python模組。之後我們將在此加入程式碼。
- 專案名/
items.py
:用來存放爬蟲爬取下來資料的模型。 - 專案名/
pipelines.py
:用來將items的模型儲存到本地磁碟中。 - 專案名/
settings.py
: 本爬蟲的一些配置資訊(比如請求頭、多久傳送一次請求、ip代理池等)。 - 專案名/
middlewares.py
: 用來存放各種中介軟體的檔案。 - 專案名/spiders包:以後所有的爬蟲,都是存放到這個裡面