淺談網絡爬蟲爬js動態加載網頁(一)


  由於別的項目組在做輿情的預言項目,我手頭正好沒有什么項目,突然心血來潮想研究一下爬蟲、分析的簡單原型。網上查查這方面的資料還真是多,眼睛都看花了。搜了搜對於我這種新手來說,想做一個簡單的爬蟲程序,所以HttpClient + jsoup是一個不錯的選擇。前者用來管理請求,后者用來解析頁面,主要是后者的select語法很像jquery,對於用js的我來說方便太多了。

  昨天和他們聊天的時候,他們選用了幾個著名的開源框架使用,聊着聊着就發現原來他們目前還沒有辦法抓取動態的網頁,尤其是幾個重要的數字,例如評論數,回帖數等等。大致了解了一下,例如TRS的爬蟲,對於js的調用,需要寫js腳本,但是分析量巨大,他們的技術人員告訴我們,類似這樣的模板他們配的話,一天也就只能配2到3個,更不要說我們這些半路出家的。正好覺得頗有挑戰,所以昨天答應了他們看看能不能找到一個相對來說簡單的解決辦法,當然,先不考慮效率。

  舉一個簡單的例子,如下圖

  “我有話說”后的1307就是后加載的,但是往往這些數字對於輿情分析來說還是比較重要的。

  大致了解了需求,就分析一下如何解決。通常,我們的一次請求,得到的回應是包含js代碼和html元素的,所以對於jsoup這樣的html解析器在這里就難以發揮優勢,因為它所能拿到的html,1307還沒有生成。這個時候就需要一個可運行js的平台,將運行過js代碼的后的頁面,交由html解析,這樣才能正確獲得結果。

  由於我比較偷懶,寫腳本的方式一開始就被我拋棄了,因為分析一個頁面太痛苦了,代碼亂成一鍋粥,好多還采用壓縮的辦法,滿眼都是a(),b()的方法,看的太累了。所以我最優先想到的是,為什么我不能讓這個地址在某個瀏覽器中運行,然后將運行的結果交給html解析器去解析,那么整個問題不就迎刃而解了嗎。這樣我暫時的解決方案就是在爬蟲服務端,開一個后台的瀏覽器,或者是有瀏覽器內核的程序,將url地址交給它去請求,然后從瀏覽器中將頁面的元素取出,交給html解析器去解析,從而獲取自己想要的信息。

  明天接着聊,先休息了。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM