nodejs上是否有類似Ruby的nokogiri? 我的意思是一個用戶友好的HTML解析器。Node.js上的HTML解析器
我在Node.js模塊頁面看到了一些解析器,但我找不到一些漂亮和新鮮的東西。
nodejs上是否有類似Ruby的nokogiri? 我的意思是一個用戶友好的HTML解析器。Node.js上的HTML解析器
我在Node.js模塊頁面看到了一些解析器,但我找不到一些漂亮和新鮮的東西。
還有cheerio,它有jQuery接口,它比老版本的jsdom快很多,儘管現在它們在性能上差不多。
您可能想看看htmlparser2,它是一個流式解析器,根據其基準測試,它似乎比其他測試更快,並且默認情況下沒有DOM。它也可以生成一個DOM,因爲它也綁定了一個創建DOM的處理程序。這是cheerio使用的解析器。
parse5也看起來像一個很好的解決方案。它非常活躍(自上次提交此更新以來已有11天),符合WHATWG標準,用於jsdom,Angular和Polymer。
如果你想解析HTML爲web scraping,你可以使用YQL。有一個node module它。 YQL我認爲如果你的HTML來自static網站,這將是最好的解決方案,因爲你依賴的是服務,而不是你自己的代碼和處理能力。雖然請注意,如果網頁的robot.txt不允許網頁,YQL將無法使用。
如果您要搜索的網站是dynamic,那麼您應該使用headless browser,比如phantomjs。如果你正在考慮phantomjs,也請看casperjs。你可以用節點SpookyJS控制casperjs。
除了phantomjs,還有zombiejs。與不能嵌入到nodej中的phantomjs不同,zombiejs只是一個節點模塊。
後面的解決方案有nettuts+ toturial。
非常完整的答案。不錯的工作。 –
您可以使用DomHandler模塊(與htmlparser2捆綁)從htmlparser2獲取DOM。它們被有意地分開以允許其他類型的處理HTML而不用創建DOM的開銷。 – esp
@esp謝謝,在我認爲它是非標準DOM之前,我相應地更改了該部分。 –
嘗試https://github.com/tmpvar/jsdom - 你給它一些HTML,它給你一個DOM。
您還可以看看X射線:https://github.com/lapwinglabs/x-ray
你所說的「友好」是什麼意思?方便的工作和選擇節點,像Nokogiri的XPath和CSS選擇器支持?可以解析無效的「標籤湯」HTML嗎? – Phrogz
如果您對jQuery感到滿意,請考慮[此答案](http://stackoverflow.com/a/31361044/778272)。 –
你們爲什麼總是把所有事情都評定爲脫離主題或者不可接受?這是一個真正的人,有一個合法的問題。你只需要繼續並關閉它。它會讓你感覺重要嗎? –