最近有乙個私人專案要搞,可能最近的部落格都會變成爬蟲跟資料分析類的了。既然是爬蟲,第一反應想到的就是鼎鼎大名的scrapy了,其次想到的pyspider,最後想到的就是自己寫。
scrapy是封裝了twisted的乙個爬蟲框架,專案結構比較清晰
其中item pipeline決定了資料傳輸跟儲存的結構,而爬蟲的核心部分在spider目錄下,而爬蟲也只需要關係核心的解析規則編寫。可以看出,scrapy框架搭了乙個架子,在這框架中其實需要實現的核心功能還是要很多的,但是不需要關心中介軟體層面的東西了。另外scrapy很方便擴充套件,因此,是乙個很不錯的輪子了。
另外乙個就是pyspider,這個框架封裝了tornado,以及整合了一系列工具,比如lxml, css-selector-help,pyquery,phantomjs等,而且開放的api也相當精簡,相當於說,pyspider就是針對新手量身定做的乙個框架,類似於scrapy中中介軟體的東西,這邊已經幫你整合好了,所有需要關心的就是你的爬蟲規則,甚至爬蟲規則都支援單步除錯編寫,門檻幾乎為0了。
經過思考,如果要研究乙個框架的技術,我決定還是研究pyspider會比較好,原因如下。
1.同樣的非同步框架,tornado可能比twisted抽象程度更低,且更現代一點;
2.pyquery,phantomjs等都是目前比較流行的前端解析工具,因此研究一下它的接入方式以及api封裝對我來說更有實際價值;
(1)scrapy-splash:另外有乙個實戰的例子也貼出來:
(2)scrapy+spynner:實戰例子也貼一下:
但是 spynner是基於pyqt 和 webkit構建的,而splash也是基於twisted跟qt。有qt,那肯定效率不行啊,還不如用selenium了,在這一點上,phantomjs是基於webkit的js api,因此它的好處就是快。綜合考慮下,還是研究pyspider吧。
也許後續會貼出一系列pyspider原始碼分析的文章。
pyspider 搭建日誌
1 安裝pip 略2 安裝phantomjs 必要條件 sudo yum y install gcc gcc c make flex bison gperf ruby openssl devel freetype devel fontconfig devel libicu devel sqlite ...
完整pyspider安裝
通過pip install pyspider,部分win10使用者在安裝pyspider時可能會出現 command python setup.py egg info failed with error code 10 in 這個錯誤,是因為找不到pycurl導致,所以我們需要用下面的方法。一 pi...
Pyspider的安裝使用
系統版本是 centos 7.2 自帶python版本2.7.5 1,更新epl源 yum y install epel release 2,安裝pip yum install python pip y 3,提示pip版本有點低,更新一下 pip install upgrade pip 4,用pip...