Что вы подразумеваете под "дружелюбным"? Удобно работать и выбирать узлы, как, например, поддержка XPath и CSS-селекторов в Nokogiri? Подходит для анализа недопустимого "тега супа" HTML?
Phrogz
Если вы знакомы с jQuery, подумайте над этим ответом .
Лусио Пайва
Ответы:
446
Если вы хотите построить 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 является просто модулем узла.
Вы можете получить DOM из htmlparser2 с помощью модуля DomHandler (в комплекте с htmlparser2). Они специально разделены, чтобы разрешить другие виды обработки HTML без затрат на создание DOM.
esp
@esp Спасибо, прежде чем я подумал, что это нестандартный DOM, я соответственно изменил этот раздел.
Фарид Нури Нешат
Я не уверен, как вы YQL для сканирования - это больше для присоединения результатов веб-службы, а не обработки разметки.
dardenfall
@dardenfall Вы правы, ползание - не правильный термин. Я изменил это со соскобом :)
Фарид Нури Нешат
@Farid - (я бы просто отправил вам сообщение, если бы мог), рискуя спорить в комментариях (извините!) Я до сих пор не понимаю, как вы используете это для очистки. Он работает с веб- сервисами , а не с сайтами, а с wservices вы редко анализируете html. Может быть, XML, но не HTML.
Ответы:
Если вы хотите построить 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
источник