上次面試,面試官問了下如何使用websocket抓取js渲染了的頁面,因爲原來抓取小說網站上的首頁面都是靜態網頁,還沒考慮過js渲染頁面,後來看了看,發現使用websocket抓取js渲染頁面主要有兩種方式:
1.使用工具,將頁面進行js渲染之後再抓取,這主要的工具有Selenium
、HtmlUnit
或者PhantomJs,但是這些工具都存在一定的效率問題,同時也不是那麼穩定。好處是編寫規則同靜態頁面一樣。
2.分析ajax請求中的地址,因爲js渲染出的數據一般也是通過ajax從後臺傳輸過來的,而且相對於頁面樣式,這種接口變化可能性更小。缺點就是找到這個請求,並進行模擬,是一個相對困難的過程,也需要相對多的分析經驗。
兩種模式的大概模型:
-
後端渲染的頁面
下載輔助頁面=>發現鏈接=>下載並分析目標HTML
-
前端渲染的頁面
發現輔助數據=>構造鏈接=>下載並分析目標AJAX
參考地址:http://webmagic.io/docs/zh/posts/chx-cases/js-render-page.html