Как я могу разобрать HTML-страницу с узлом.js
Мне нужно разобрать (на стороне сервера) большое количество HTML-страниц.
Мы все согласны с тем, что регулярное выражение-это не путь сюда.
Мне кажется, что javascript является родным способом разбора HTML-страницы, но это предположение опирается на код на стороне сервера, имеющий все возможности DOM javascript внутри браузера.
Делает Узел.у js есть эта способность встроена?
Есть ли лучший подход к этой проблеме, разбор HTML на стороне сервера?
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
и демо здесь:
Htmlparser2 по FB55, кажется, хорошая альтернатива.
jsdom слишком строг, чтобы делать какие-либо реальные скребки экрана, но beautifulsoup не задыхается от плохой разметки.
node-soupselect это порт beautifulsoup python в nodejs, и он прекрасно работает
в .NET, есть HTML Agility Pack, что является чрезвычайно прочной библиотекой синтаксического анализа HTML.
Comments