HTML-парсер на Node.js

Есть ли что-то вроде Ruby nokogiri на nodejs? Я имею в виду удобный HTML-парсер.

Я видел на странице Node.js модули несколько парсеров, но я не могу найти что-то красивое и свежее.

Ответ 1

Если вы хотите построить DOM, вы можете использовать jsdom.

Там также cheerio, он имеет jQuery, и это намного быстрее, чем более старые версии jsdom, хотя в наши дни они схожи по производительности.

Вы можете взглянуть на htmlparser2, который является потоковым синтаксическим анализатором, и, согласно его эталону, кажется, что он быстрее чем другие, и DOM по умолчанию. Он также может создавать DOM, так как он также связан с обработчиком, который создает DOM. Это парсер, который используется cheerio.

parse5 также выглядит как хорошее решение. Он довольно активен (11 дней с момента последнего фиксации с этого обновления), WHATWG-совместимый и используется в jsdom, Angular и Polymer.

И если вы хотите проанализировать HTML для веб-скрепок, вы можете использовать YQL. Для этого есть node module. YQL Я думаю, было бы лучшим решением, если ваш HTML-код находится на static, поскольку вы полагаетесь на услугу, а не на свой собственный код и вычислительной мощности. Хотя обратите внимание, что он не будет работать, если страница будет запрещена robot.txt сайта, YQL не будет работать с ней.

Если веб-сайт, который вы пытаетесь очистить, dynamic, вы должны использовать браузер без браузера, например phantomjs. Также посмотрите casperjs, если вы рассматриваете фантомы. И вы можете управлять casperjs из node с помощью SpookyJS.

Рядом с phantomjs есть zombiejs. В отличие от phantomjs, которые не могут быть внедрены в nodejs, zombiejs является всего лишь модулем node.

Для последних решений существует nettuts + toturial.

Ответ 2

Обновление: cheerio, вероятно, лучший выбор.

Node.io - довольно всеобъемлющий инструмент для очистки.