Как я могу разобрать HTML-страницу с узлом.js



Мне нужно разобрать (на стороне сервера) большое количество HTML-страниц.

Мы все согласны с тем, что регулярное выражение-это не путь сюда.

Мне кажется, что javascript является родным способом разбора HTML-страницы, но это предположение опирается на код на стороне сервера, имеющий все возможности DOM javascript внутри браузера.



Делает Узел.у js есть эта способность встроена?

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

585   6  

6 ответов:

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

другие варианты включают в себя:

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

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

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

❤ знакомый синтаксис: Cheerio реализует подмножество core jQuery. Привет удаляет все нестыковки дом и хлама браузера с помощью jQuery библиотека, раскрывая его по-настоящему великолепный интерфейс API.

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

Ins безумно гибкий: Cheerio оборачивается вокруг @ fb55 прощает htmlparser. Cheerio может анализировать практически любой HTML или XML документ.

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

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

и демо здесь:

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

Htmlparser2 по FB55, кажется, хорошая альтернатива.

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

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

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

Comments

    Ничего не найдено.