【Scrapy】走進(jìn)成熟的爬蟲(chóng)框架
優(yōu)采云 發(fā)布時(shí)間: 2020-05-10 08:02
今天簡(jiǎn)單說(shuō)說(shuō)Scrapy的安裝。
前幾天有小伙伴留言說(shuō)能不能介紹推薦一下爬蟲(chóng)框架,我給他推薦了Scrapy,本來(lái)想偷個(gè)懶,推薦他去看官方文檔,里面有一些demo代碼可供學(xué)習測試。結果收到回復說(shuō)文檔中演示用到的網(wǎng)站已經(jīng)難以訪(fǎng)問(wèn)了。所以只能自己來(lái)簡(jiǎn)單寫(xiě)一下了,也算是自己一個(gè)學(xué)習記錄。
Scrapy是哪些?
定義介紹我也不復制粘貼了。簡(jiǎn)單來(lái)說(shuō),Scrapy是一個(gè)中小型的爬蟲(chóng)框架,框架的意義就在于幫你預設好了好多可以用的東西,讓你可以從復雜的數據流和底層控制中抽離下來(lái),專(zhuān)心于頁(yè)面的解析即可完成中大項目爬蟲(chóng),甚至是分布式爬蟲(chóng)。
但是爬蟲(chóng)入門(mén)是不推薦直接從框架入手的,直接從框架入手會(huì )使你頭暈目眩,覺(jué)得哪里哪里都看不懂,有點(diǎn)類(lèi)似于還沒(méi)學(xué)會(huì )基礎的措詞造句就直接套用模板寫(xiě)成文章,自然是非常費力的。所以還是推薦你們有一定的手寫(xiě)爬蟲(chóng)基礎再深入了解框架。(當然還沒(méi)有入門(mén)爬蟲(chóng)的朋友…可以催更我的爬蟲(chóng)入門(mén)文章…)
那么首先是安裝。
Python的版本選擇之前提過(guò),推薦你們全面擁抱Python 3.x。
很久以前,大概是我剛入門(mén)學(xué)習Scrapy時(shí)爬蟲(chóng)框架,Scrapy還沒(méi)有支持Python 3.x,那時(shí)一部分爬蟲(chóng)工程師把Scrapy不支持Python 3.x作為不進(jìn)行遷移的理由。當然了,那時(shí)更具體的緣由是Scrapy所依賴(lài)的twisted和mitmproxy不支持Python 3.x。
現在我仍然推薦你們全面擁抱Python 3.x。
先安裝Python
這次我們以本地環(huán)境來(lái)進(jìn)行安裝(Windows+Anaconda),由于Python的跨平臺特點(diǎn)爬蟲(chóng)框架,我們本地寫(xiě)的代碼可以很容易遷移到別的筆記本或服務(wù)器使用。(當然了,從規范使用的角度上推薦你們使用單獨的env,或者直接使用docker或則vagrant,不過(guò)那就說(shuō)來(lái)話(huà)長(cháng)了…以后可以考慮單獨介紹)
按照慣例,我們直接使用 pip install scrapy 進(jìn)行安裝。
那么,你大幾率會(huì )碰到這樣的錯誤:
具體的錯誤緣由…缺少Microsoft Visual C++ 14.0…你也可以自己通過(guò)其他渠道解決,當然我們最推薦的做法是直接使用 conda install scrapy 命令(前提是你安裝了Anaconda而非普通Python)。
如果碰到寫(xiě)入權限錯誤,請用管理員模式運行cmd。
之后我們可以寫(xiě)一個(gè)太小的demo,依然是官方案例中的DMOZ,DMOZ網(wǎng)站是一個(gè)知名的開(kāi)放式分類(lèi)目錄(Open DirectoryProject),原版的DMOZ已于今年的3月17日停止了營(yíng)運,目前網(wǎng)站處于403狀態(tài)。但是網(wǎng)上大量過(guò)去的教程都是以DMOZ為案例的。我為你們找到了原DMOZ網(wǎng)站的靜態(tài)鏡像站,大家可以直接訪(fǎng)問(wèn)
大家根據官方文檔的步驟繼續做就可以了,后續的問(wèn)題不大。
?。ǎ?/p>
需要注意的就是工作目錄問(wèn)題。
啟動(dòng)Scrapy項目。
scrapy startproject tutorial
進(jìn)入目錄,我們可以看見(jiàn)手動(dòng)生成的一些文件,這些文件就是scrapy框架所須要的最基礎的組織結構。
scrapy.cfg: 項目的配置文件
tutorial/: 該項目的python模塊。之后您將在此加入代碼。
tutorial/items.py: 項目中的item文件.
tutorial/pipelines.py: 項目中的pipelines文件.
tutorial/settings.py: 項目的設置文件.
tutorial/spiders/: 放置spider代碼的目錄.






