標籤:自己 教學 item latest err 模板 art mic requests
scrapy架構簡介
Scrapy,Python開發的一個快速、高層次的螢幕抓取和web抓取架構,用於抓取web網站並從頁面中提取結構化的資料。Scrapy用途廣泛,可以用於資料採礦、監測和自動化測試。(引用自:百度百科)
scrapy官方網站:https://scrapy.org/
scrapy官方文檔:https://doc.scrapy.org/en/latest/
scrapy架構安裝
首先我們安裝scrapy,使用如下命令
pip install scrapy
此時很多人應該都會遇到如下問題
error: Microsoft Visual C++ 10.0 is required.Get it with "Microsoft Windows SDK 7.1": www.microsoft.com/download/details.aspx?id=8279
這是因為scrapy中使用了許多C++的內容,所以在安裝時需要首先有C++ 10.0環境。最直接的解決辦法就是下載並安裝Microsoft Visual C++ 10.0。但為此下一個這麼大的環境,配置又是蛋疼的巨硬風,實在令人畏懼。
所以筆者建議採用第二種方式,我們仔細觀察到pip報錯前正在運行
Running setup.py clean for TwistedFailed to build Twisted
也就是說是安裝Twisted模組時出錯了,那麼我們可以選擇手動下載Twisted模組並安裝。python的各種庫有很多下載地,不少人可能會下載到 Twisted-xx.x.x.tar.bz2 ,解壓後進行安裝,發現會出現同樣的錯誤。此時我們仔細觀察之前安裝scrapy時的資訊,就會發現,pip指令自動安裝時其實也是採用的下載 bz2 檔案,解壓,運行解壓出的setup.py檔案,所以這與我們上述的手動安裝過程並沒有任何區別。
筆者推薦一個網站https://www.lfd.uci.edu/~gohlke/pythonlibs,此網站中包含幾乎所有常用的python庫。例如我們此次需要下載Twisted庫,那麼我們在網頁中搜尋Twisted,然後下載自己對應位元和python版本的Twisted庫。然後在Twisted下載位置運行cmd,執行如下命令(記得替換為自己下載的檔案名稱)
pip install Twisted-xx.x.x-cpxx-cpxxm-win_amd64.whl
然後我們只需要等待其運行完成安裝,至此我們安裝好了scrapy必須的Twisted庫,然後我們重新執行
pip install scrapy
安裝成功!
在安裝過程中,我們可以看到它為我們下載了許多輔助庫,這使得scrapy成為了一個完整的成體系的爬蟲架構,這些架構極大地簡化了我們的編程難度,降低了學習成本。
scrapy是基於requests庫搭建的,所以我們還需要執行以下命令
pip install requests
至此,我們已經完成了scrapy爬蟲架構的安裝。
scrapy爬蟲模板介紹
scrapy是一個系統的架構,使用前的準備工作與其他一些爬蟲庫相比略顯複雜,但這有限的幾步,能夠極大地降低我們後續編程的難度。
由於我們現在對scrapy架構還不熟悉,所以我們使用scrapy內建的命令來產生scrapy的模板。此次我們以爬取jobbole為例。
如,首先,我們使用如下命令
scrapy startproject jobboleSpider
這樣我們就能在當前路徑下建立了一個scrapy爬蟲項目,但這個項目此時還不完整,所以我們根據它的提示使用以下命令建立一個scrapy內建的模板
cd jobboleSpiderscrapy genspider jobbole http://blog.jobbole.com/all-posts/
根據提示資訊,我們知道了我們使用了scrapy的"basic"模板成功建立了一個scrapy項目並構建了基本的結構。那麼接下來我們開啟IDE來瞭解一下我們建立的模板。
其中scrapy.cfg使我們的全域設定檔,包含我們的設定檔案路徑,項目名稱等。
jobbole.py是我們以後實現爬蟲邏輯的主要檔案。
items.py是我們的定義資料儲存結構的檔案。
middlewares.py包含了大量中介軟體,例如下載中介軟體,重新導向中介軟體,是scrapy引擎與其他部分代碼之間發送資訊的重要通道。
pipelines.py正如其名,是一個管道,主要用於將我們獲得的資料儲存到資料庫中。
setteings.py則由大量關於scrapy的設定,例如是否遵循robot協議等。
結語
至此我們已經實現了scrapy的安裝和基本架構的實現,但還沒有進行具體的編程,接下來筆者將會帶著大家首先實現對jobbole“最新文章”的所有文章的爬取,以初步體驗到scrapy爬蟲的樂趣。然後逐步深入到類比登陸,突破反爬蟲限制等。
我會盡量詳細的說明我的每一步操作,以實現一個“小白教程”。後面的教程中我們會使用到xpath和Regex,限於篇幅,筆者對這兩個知識點只會進行一些基本的教學,如果大家想要熟練運用的話,最好能夠查閱其他一些資料進行更深入的學習。
python爬蟲隨筆-scrapy架構(1)——scrapy架構的安裝和結構介紹