Есть ли что-то вроде Ruby nokogiri на nodejs? Я имею в виду удобный HTML-парсер.
Я видел на странице Node.js модули несколько парсеров, но я не могу найти что-то красивое и свежее.
Есть ли что-то вроде Ruby nokogiri на nodejs? Я имею в виду удобный HTML-парсер.
Я видел на странице Node.js модули несколько парсеров, но я не могу найти что-то красивое и свежее.
Если вы хотите построить 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.
Обновление: cheerio, вероятно, лучший выбор.
Node.io - довольно всеобъемлющий инструмент для очистки.
Попробуйте https://github.com/tmpvar/jsdom - вы даете ему некоторый HTML, и он дает вам DOM.
Вы также можете взглянуть на рентген: https://github.com/lapwinglabs/x-ray