Как разобрать HTML-страницу с помощью Node.js

Мне нужно разобрать (на стороне сервера) большое количество HTML-страниц.
Мы все согласны с тем, что regexp – это не путь сюда.
Мне кажется, что javascript – это собственный способ parsingа HTML-страницы, но это предположение зависит от кода на стороне сервера, имеющего все возможности Javascript в браузере.

У Node.js есть встроенная способность?
Есть ли лучший подход к этой проблеме, анализ HTML на стороне сервера?

    Вы можете использовать модули npm jsdom и htmlparser для создания и анализа DOM в Node.JS.

    Другие варианты:

    • BeautifulSoup для python
    • вы можете конвертировать html в xhtml и использовать XSLT
    • HTMLAgilityPack для .NET
    • CsQuery для .NET (мой новый фаворит)
    • Двигатели JS с spidermonkey и rhino имеют встроенную поддержку E4X. Это может быть полезно, только если вы конвертируете свой html в xhtml.

    Из всех этих параметров я предпочитаю использовать параметр Node.js, поскольку он использует стандартные методы доступа W3C DOM, и я могу повторно использовать код как на клиенте, так и на сервере. Я бы хотел, чтобы методы BeautifulSoup были более похожими на W3C dom, и я думаю, что преобразование HTML в XHTML для записи XSLT является просто садистским.

    Используйте Cheerio . Это не так строго, как jsdom, и оптимизирован для очистки. В качестве бонуса используются селектора jQuery, которые вы уже знаете.

    ❤ Знакомый синтаксис: Cheerio реализует подмножество ядра jQuery. Cheerio удаляет все несоответствия DOM и браузерный треск из библиотеки jQuery, раскрывая его поистине великолепный API.

    ϟ Блательно быстро: Cheerio работает с очень простой, последовательной моделью DOM. В результате синтаксический анализ, манипулирование и рендеринг невероятно эффективны. Предварительные сквозные тесты показывают, что cheerio примерно в 8 раз быстрее, чем JSDOM.

    ❁ Безупречно гибкая: Cheerio обертывается вокруг прощающего htmlparser FB55. Cheerio может анализировать почти любой HTML или XML-документ.

    Используйте htmlparser2 , его путь быстрее и довольно просто. Обратитесь к этому примеру использования:

    https://www.npmjs.org/package/htmlparser2#usage

    И живая демонстрация здесь:

    http://demos.forbeslindesay.co.uk/htmlparser2/

    Хорошая альтернатива – Htmlparser2 от FB55.

    jsdom слишком строг, чтобы делать какие-то реальные скрипичные экраны, но beautifulsoup не задыхается от плохой разметки.

    node-soupselect – это порт красивой папки python в nodejs, и он прекрасно работает

    В .NET есть HTML Agility Pack , который представляет собой чрезвычайно прочную библиотеку parsingа HTML.

    Interesting Posts

    Как заставить диспетчер задач Windows показывать сетевое использование?

    Объяснение жизненного цикла страницы ASP.NET

    MemoryCache не соответствует ограничениям памяти в конфигурации

    Windows 10 с низкой виртуальной памятью (возможно, утечка памяти), когда компьютер остается бездействующим в течение нескольких дней

    Зависимость от Maven для API Servlet 3.0?

    Как заставить BundleCollection скрывать кэшированные пакеты скриптов в MVC4

    Почему моя 32-разрядная версия Windows 7 использует только 2,3 ГБ оперативной памяти?

    Слияние / синхронизация двух установок Thunderbird

    Временная сложность таблицы Hash

    Как связать тип файла, который нужно открыть с помощью параметров командной строки?

    Получите версию артефакта Maven во время выполнения

    Преобразование Excel в формат строки

    Получение ответа асинхронного запроса HttpWebRequest

    Почему (или когда) Rscript (или littler) лучше, чем R CMD BATCH?

    Вертикальный текст в Wpf TextBlock

    Давайте будем гением компьютера.