爬蟲程式定向簡單頁面解析
主要看你定義的「爬蟲」幹什麼用。1、如果是定向爬取幾個頁面,做一些簡單的頁面解析,爬取效率不是核心要求,那麼用什麼語言差異不大。
當然要是頁面結構複雜,正規表示式寫得巨複雜,尤其是用過那些支援xpath的類庫/爬蟲庫后,就會發現此種方式雖然入門門檻低,但擴充套件性、可維護性等都奇差。因此此種情況下還是推薦採用一些現成的爬蟲庫,諸如xpath、多執行緒支援還是必須考慮的因素。
作者:梁川
鏈接:https://www.zhihu.com/question/23643061/answer/26322652
來源:知乎
著作權歸作者所有。商業轉載請聯繫作者獲得授權,非商業轉載請註明出處。
2、如果是定向爬取,且主要目標是解析js動態產生的內容
此時候,頁面內容是有js/ajax動態產生的,用普通的請求頁面->解析的方法就不管用了,需要藉助一個類似firefox、chrome瀏覽器的js引擎來對頁面的js程式碼做動態解析。 此種情況下,推薦考慮casperJS+phantomjs或slimerJS+phantomjs ,當然諸如selenium之類的也可以考慮。
3、如果爬蟲是涉及大規模網站爬取,效率、擴充套件性、可維護性等是必須考慮的因素時候
大規模爬蟲爬取涉及諸多問題:多執行緒併發、I/O機制、分佈式爬取、訊息通訊、判重機制、任務排程等等,此時候語言和所用框架的選取就具有極大意義了。
[*]PHP對多執行緒、非同步支援較差,不建議採用。
[*]NodeJS:對一些垂直網站爬取倒可以,但由於分佈式爬取、訊息通訊等支援較弱,根據自己情況判斷。
[*]Python:強烈建議,對以上問題都有較好支援。尤其是Scrapy框架值得作為第一選擇。優點諸多:支援xpath;基於twisted,效能不錯;有較好的除錯工具;
此種情況下,如果還需要做js動態內容的解析,casperjs就不適合了,只有基於諸如chrome V8引擎之類自己做js引擎。
至於C、C++雖然效能不錯,但不推薦,尤其是考慮到成本等諸多因素;對於大部分公司還是建議基於一些開源的框架來做,不要自己發明輪子,做一個簡單的爬蟲容易,但要做一個完備的爬蟲挺難的。
像我搭建的微信公眾號內容聚合的網站http://lewuxian.com就是基於Scrapy做的,當然還涉及訊息佇列等。可以參考下圖:
具體內容可以參考
一個任務排程分發服務的架構
頁:
[1]