我想抓取網站上的內容,但是好多內容都js產生的,請問有沒有能夠解析js的庫方便抓取頁面js解析後的html庫啊?比如商城產品資訊,QQ空間內容等。不管什麼語言,能夠快速開發就行,謝謝
回複內容:
我想抓取網站上的內容,但是好多內容都js產生的,請問有沒有能夠解析js的庫方便抓取頁面js解析後的html庫啊?比如商城產品資訊,QQ空間內容等。不管什麼語言,能夠快速開發就行,謝謝
這中不僅僅是解析 js,還要瀏覽器核心的!
推薦幾個:
- QtWebKit,已知有 Python 和 C++ 支援
- PhantomJS,已知有 JavaScript、CoffeeScript 和 Python 支援,也是 Webkit 核心
- SlimerJS,已知有 JavaScript 支援,Gecko 核心,和Firefox是一樣的,也可以運行於Firefox之上
- CasperJS,已知有 JavaScript 支援。上邊兩個的進一步封裝
感覺你的問題可以不一定要那麼重量級的東西的。
你要抓的頁面內容,你知道它是從 js 來的,那麼這個 js 是從哪裡來的?可能是頁面本身有的,也可能是 ajax 的 json 。
找出包含你需要的內容的這些 js ,然後是 json 的話用一個 json parser ,是 js 的話簡單的也可以用正則提取。
phantomJs maybe the best solution for you, also, casperJs is based on phantomJs that can be a useful tool to grab webpage content created by javascript or ajax
試試 node.js
從你的描述聽起來,是想抓頁面,但是頁面裡內容是JS生產的,你用抓頁面的方法,抓下來一個空殼子,啥也沒有。對吧?
這樣的話,我建議你使用“無頭瀏覽器”,首推樓上說的PhantomJS,它本質上就是個瀏覽器,只是沒有使用者介面而已,通過編程來調用,最後可以和你的外部代碼產生一些互動,給你返回(最終產生的)HTML、給你等等。
直接用nodejs,然後執行返回內容就妥了
我一般在這種情況下,都是自己把js代碼看一下,找到需要的地方然後自己仿照實現出來,而且java下貌似有一個庫是可以執行js代碼的,比如我在做新浪微博類比登入的時候就是直接將網站js中的加密函數提取出來,然後在代碼中執行獲得結果,最後類比請求就好了