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. 強大的調度控制
沒用過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函數?
※菜鳥學習網路爬蟲的最佳路線是什麼?