Jsoup, как HTML-парсер для переполнения стека

Я писал некоторые коды для получения данных с некоторых страниц на Java, и Jsoup был одной из лучших библиотек для работы. Но, к сожалению, я должен перенести весь код на C / C ++. Но я не могу найти какой-либо достойный HTML-парсер для использования на C ++. Есть ли какая-нибудь Jsoup-подобная библиотека для C ++ или как можно достичь подобных результатов?

[В настоящее время я использую Curl для получения источника страниц и роуминга в интернете, чтобы найти html-парсер]

16

Решение

К сожалению, я думаю, что нет парсера, как Jsoup для C ++ …

Помимо библиотек, которые уже упоминались здесь, здесь есть хороший обзор синтаксического анализатора C ++ (и некоторых C): Бесплатные библиотеки синтаксического анализатора C или C ++ XML

Для разбора я использовал TinyXML-2 для (Html-) DOM-анализа; это очень маленькая (всего 2 файла) библиотека, которая работает на большинстве ОС (даже не на рабочем столе).

Libxml

  • двухтактный парсер (DOM, SAX)
  • Проверка
  • Поддержка XPath и XPointer
  • Кроссплатформенность / хорошая документация

Apache Xerxces

  • двухтактный парсер (DOM, SAX)
  • Проверка
  • Нет поддержки XPath (но пакет для этого?)
  • Кроссплатформенность / хорошая документация

Если вы находитесь на C ++ CLI, проверьте NSoup — порт Jsoup для .NET.

Еще немного:

Может быть, вы можете объединить DOM Model / Parser и CSS-селектор вместе?

11

Другие решения

Если вы знакомы с Qt Framework, наиболее удобным способом является использование QWebElement (Ссылка Вот).

В противном случае (как предлагает другой пост) использование Аккуратный преобразовать HTML в действительный XML, а затем с помощью синтаксического анализатора XML, такого как LibXML ++ хороший вариант Вы можете найти пример кода, показывающий эти два шага Вот.

8

Хром имеет открытый исходный код синтаксический анализатор. Так же Гумбо-парсер гугл выглядит круто.

5

Ты можешь использовать Xerces2 как DOM-парсер.

Или использовать HTML Tidy очистить HTML и преобразовать его в XHTML, а затем проанализировать XML с pugixml или подобный анализатор XML. А так как pugixml — не проверяющий парсер, он может также работать с необработанным HTML без необходимости запуска HTML Tidy в первую очередь.

1

Если вы не возражаете вызывать Python из C ++, вы можете использовать Красивый суп. По крайней мере, имя правильно!

Серьезно — это хороший, не бессмысленный анализатор HTML. Я не пробовал вызывать его из C ++, хотя должен быть простым.

0
По вопросам рекламы [email protected]