神魂顛倒論壇

 取回密碼
 加入會員
搜尋
檢視: 3049|回覆: 0
收起左側

[後端] 爬蟲程式定向簡單頁面解析

[複製連結]
發表於 2022-3-7 12:41:07 | 顯示全部樓層 |閱讀模式
主要看你定義的「爬蟲」幹什麼用。

1、如果是定向爬取幾個頁面,做一些簡單的頁面解析,爬取效率不是核心要求,那麼用什麼語言差異不大。   

當然要是頁面結構複雜,正規表示式寫得巨複雜,尤其是用過那些支援xpath的類庫/爬蟲庫后,就會發現此種方式雖然入門門檻低,但擴充套件性、可維護性等都奇差。因此此種情況下還是推薦採用一些現成的爬蟲庫,諸如xpath、多執行緒支援還是必須考慮的因素。
7cc9c9c0cc4bbf474b55600e0ff4ccce.png

作者:梁川
鏈接: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做的,當然還涉及訊息佇列等。可以參考下圖:

23b58ecfcd42d2f0b26931b660ede44f_1440w.jpg

具體內容可以參考

一個任務排程分發服務的架構


您需要登入後才可以回帖 登入 | 加入會員

本版積分規則

Archiver|手機版|小黑屋|Flash2u論壇

GMT+8, 2022-5-23 19:32 , Processed in 0.197434 second(s), 24 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回覆 回到頂端 返回清單