pyspider 和 scrapy 比較起來有什麼優缺點嗎?

如果我要做一個比較靈活的,可配置的爬蟲,應該用哪一個呢?


Pyspiders是國內某大神開發了個WebUI的[Pyspider](GitHub - binux/pyspider: A Powerful Spider(Web Crawler) System in Python.),具有以下特性:

1. python 腳本控制,可以用任何你喜歡的html解析包(內置 pyquery)
2. WEB 界面編寫調試腳本,起停腳本,監控執行狀態,查看活動歷史,獲取結果產出
3. 支持 MySQL, MongoDB, SQLite
4. 支持抓取 JavaScript 的頁面
5. 組件可替換,支持單機/分散式部署,支持 Docker 部署
6. 強大的調度控制

從內容上講,兩者具有功能差不多,包括以上3,5,6。不同是Scrapy原生不支持js渲染,需要單獨下載[scrapy-splash](GitHub - scrapy-plugins/scrapy-splash: Scrapy+Splash for JavaScript integration),而PyScrapy內置支持[scrapyjs](GitHub - scrapy-plugins/scrapy-splash: Scrapy+Splash for JavaScript integration);PySpider內置 pyquery選擇器,Scrapy有XPath和CSS選擇器,這兩個大家可能更熟一點;此外,Scrapy全部命令行操作,Pyscrapy有較好的WebUI;還有,scrapy對千萬級URL去重支持很好,採用[布隆過濾](海量大數據處理單機方案)來做,而Spider用的是資料庫來去重?最後,PySpider更加容易調試,scrapy默認的debug模式信息量太大,warn模式信息量太少,由於非同步框架出錯後是不會停掉其他任務的,也就是出錯了還會接著跑。。。從整體上來說,pyspider比scrapy簡單,並且pyspider可以在線提供爬蟲服務,也就是所說的SaaS,想要做個簡單的爬蟲推薦使用它,但自定義程度相對scrapy低,社區人數和文檔都沒有scrapy強,但scrapy要學習的相關知識也較多,故而完成一個爬蟲的時間較長。


沒用過pyspider,就scrapy而言,我覺得已經足夠靈活了,首先它的parse-&>yield item-&>pipeline流程肯定是所有爬蟲的固有模式。
解析函數可以自己寫,怎麼處理頁面是你自己決定的。
pipeline可以自己寫,抓到了數據要怎麼處理也是你自己決定的。

剩下的無非是一些底層的操作的修改問題,例如代理中間件/下載中間件之類的,這些都可以通過自己寫middleware來實現,甚至有很多現成的中間件已經可以滿足絕大部分的個性化需求了。

pyspider好像是基於一個web來查看運行狀態的,這個比scrapy好一點,不過沒具體試過。
scrapy默認的debug模式信息量太大,warn模式信息量太少,info模式比較適中,但總的來說可讀性略差。

而且scrapy調試不方便,我基本都只能靠logging.warn()來列印信息做為調試工具,不過基本也夠用了,主要是每次想調試都必須運行整個爬蟲才行。

單獨測試某個函數好像也可以,但有點麻煩,官方的推薦調試方法也就是靠parse命令,我個人覺得很簡陋,基本不用。基本上就是靠scrapy shell先驗證一遍自己的頁面解析規則,然後就是靠自己對代碼的控制了。

需要注意的是,scrapy基於twisted框架,運行中產生的exception是不會幹掉reactor的,如果你開了debug級別的調試信息,看著一秒鐘幾十行的console輸出,可能都不會注意到中間出了exception未處理,等爬完了才發現,卧槽,數據咋不對。。。。

至於用scrapy寫爬蟲的難度,我不清楚另一個回答里有人說一個小時可以寫十個爬蟲的pyspider到底有多簡單;但我覺得scrapy如果你寫過幾次爬蟲,已經熟悉了其工作套路,很多代碼都是可以復用的。
基本上寫一個scrapy爬蟲也就只需要1個小時,中間主要是花在了調試和業務邏輯改進上,我覺得還是挺快的,畢竟我一個爬蟲基本都要運行N個小時,我一小時寫10個爬蟲也跑不了這麼快。


兩個都試過:pyspider 有自己的操作界面,scrapy項目基於框架寫代碼,調試的難度高於pyspider


都用過。
pyspider的優點是簡單,立刻就能上手,腳本編寫規則。懂了的話,一小時寫甚至可以寫十多個爬蟲。
scrapy的優點是自定義程度高,適合學習研究爬蟲技術,要學習的相關知識也較多,故而完成一個爬蟲的時間較長。
不過這2個東西也沒啥難的,玩2天就全明白了。


親,先動手吧


PySpider是國內高人寫的吧,求整一份中文的教程出來啊。


Quora上有個老外寫了個回復,挺詳細的,但主要是說scrapy的優勢,盼pyspider大神回復。

https://www.quora.com/How-does-pyspider-compare-to-scrapy


pyspider只做過linux適配,win不穩定

scrapy是python2.X版的,絕望

都不適合我了。。。


pyspider文檔少是個大問題,正式系統想要用的話還需要很大的修改。但是我覺得這個框架思路非常棒。


還是 scrapy 吧 文檔 全 重要原因


用過scrapy,感覺挺方便,但是上手不容易,而且只能在Python2上面運行。另外Python自帶的urllib庫也可以抓網頁,可以運行在Python3,lz也可以試試。


動態頁面抓取,gui配置界面,自帶了css選擇器,更容易配置;


推薦閱讀:

如何對使用了ssl pinning的APP(如知乎)進行抓包?
Python 如何將 Unicode 轉換到漢字?
scrapy 抓取的中文結果亂碼,請問如何解決?
數據抓取,網站怎麼找到加密轉換的那段js函數?
菜鳥學習網路爬蟲的最佳路線是什麼?

TAG:Python | 爬蟲計算機網路 | scrapy |