Есть ли что-то вроде нокогири Руби на nodejs? Я имею в виду удобный HTML-парсер.
Я видел на странице модулей Node.js некоторые парсеры, но не могу найти что-то красивое и свежее.
Есть ли что-то вроде нокогири Руби на nodejs? Я имею в виду удобный HTML-парсер.
Я видел на странице модулей Node.js некоторые парсеры, но не могу найти что-то красивое и свежее.
Ответы:
Если вы хотите построить DOM, вы можете использовать jsdom .
Также есть cheerio , он имеет интерфейс jQuery и работает намного быстрее, чем старые версии jsdom, хотя в наши дни они похожи по производительности.
Возможно, вы захотите взглянуть на htmlparser2 , который является потоковым парсером, и в соответствии с его эталоном он кажется быстрее, чем другие, и по умолчанию DOM отсутствует. Он также может создавать DOM, поскольку он также связан с обработчиком, который создает DOM. Это парсер, который используется cheerio.
parse5 также выглядит как хорошее решение. Он довольно активен (11 дней с момента последнего коммита на момент обновления), соответствует WHATWG и используется в jsdom , Angular и Polymer .
И если вы хотите проанализировать HTML для просмотра веб-страниц , вы можете использовать YQL 1 . Для этого есть модуль узла . YQL, я думаю, будет лучшим решением, если ваш HTML-код взят со статического веб-сайта, поскольку вы полагаетесь на сервис, а не на собственный код и вычислительную мощность. Обратите внимание, что это не будет работать, если страница запрещена robot.txt сайта, YQL не будет работать с ним.
Если веб-сайт, который вы пытаетесь обработать, является динамическим, то вам следует использовать браузер без заголовка, такой как phantomjs . Также взгляните на casperjs , если вы рассматриваете фантомы. И вы можете управлять casperjs из узла с помощью SpookyJS .
Рядом с фантомами есть зомби . В отличие от фантомов, которые не могут быть встроены в nodejs, zombiejs является просто модулем узла.
Для последних решений есть nettuts + toturial .
1 С августа 2014 года библиотека YUI, которая является обязательной для YQL, больше не поддерживается, источник
Попробуйте https://github.com/tmpvar/jsdom - вы даете ему немного HTML, и он дает вам DOM.
Вы также можете взглянуть на рентген: https://github.com/lapwinglabs/x-ray