1. 程式人生 > >爬蟲學習 pyspider和scrapy小結 / 與其他工具對比

爬蟲學習 pyspider和scrapy小結 / 與其他工具對比

從火車頭瞭解了翻頁與正則表示式帶入了爬蟲原理、後python的urllib和requests徹底梳理了爬蟲過程,之後引入phantomjs chromedriver這些徹底解決了爬蟲問題,但是這些太瑣碎,而且反爬蟲越來越厲害,必須升級爬取武器到專業級別。

用python實現了基本爬蟲之後,相比火車頭工具,再次體驗到了程式碼在靈活度和速度方面的魅力(之前用python用正則表示式處理文字資料速度是excel的10倍),資料採集全面轉向python,對爬蟲的關鍵幾步也更加清晰:

1,構造url:包括單頁、逐層深入、翻頁、傳入一個網頁list;各種引數例如headers引數
2,訪問並下載目標頁面
3,目標頁面型別定義與解析,解析是根本,看返回的目標型別。
4,儲存
5,各種配置,例如限制速度
6,高階的:各種反爬蟲、分散式、斷網怎麼辦、防止重複爬!

上面的流程有很多技術細節,其中從技術上可以分為三個:

1,瞭解http相關的知識,例如訪問、下載,還有分散式,這塊東西太多了,絕非易事!因此最容易產生各種問題。
2,構造url,這裡包括url表達和相關的引數,積累多了也就熟練了。
3,phantomjs操作
4,解析資料,正則表示式(雖然使用起來最麻煩,但是實際操作來看必不可少)、bs4、css、xpath這些,掌握的方法也是多用,多積累程式碼。

以上應用爬蟲的人最關心同時最應該花費心思的就是技術的第2、3、4,對於技術好的人,第3點速度稍慢,自有解決方法,但是對於我這個業務人員來說,完全沒必要花費那麼多時間深入了,用phantomjs加上sleep10秒中,什麼都解決了。

因此必須用框架,只focus最核心的,其他的例如http知識、分散式、斷網、防止重複爬取等還是直接站在大牛們的肩上吧!於是 pyspider和scrapy都必須學習了。

個人經過實踐感覺,pyspider更加簡單,但是網上資料少,只要好好讀官方文件基本能解決90%的問題,因此對我這種抄程式碼為主的使用者來說不夠靈活,例如想用phantomjs實現模擬點選。scrapy相對複雜,而且網路上程式碼多,因此相對靈活。

後面分別按照不同階段程式碼積累並分享出來!

與其他工具對比:

今日看了某大型網際網路公司搜尋團隊開發的產品,訪問網頁時候就出問題了,並且其解析規則更麻煩,而且各個使用者之間沒有共享,突然覺得訪問、下載這兩步真是不是那麼簡單的,這些還是給框架去做吧,畢竟開源產品遇到的問題更多!

作為業務公司還是要更多關注業務!技術只是實現業務的手段而非核心競爭力,因此只用成熟的技術就好!穩定、低成本!靠譜!

再來一個案例,看到網上一個使用代理池爬取微信的視訊教程,程式設計師自己寫的程式碼,真的和scrapy差距很大,網頁訪問和代理程式碼寫得都亂,還是用scrapy吧。