c++ html css-selectors jsoup

Jsoup como html parser para C++



css-selectors (6)

Chromium tiene un parser código abierto. Además, el github.com/google/gumbo-parser ve bien.

He estado escribiendo algunos códigos para obtener algunos datos de algunas páginas en Java y Jsoup era una de las mejores bibliotecas para trabajar. Pero, desafortunadamente, tengo que portar todo el código a C / C ++. Pero no puedo encontrar ningún analizador HTML decente para usar en c ++. ¿Hay alguna biblioteca tipo Jsoup para C ++ o cómo se pueden lograr resultados similares?

[Actualmente estoy usando Curl para obtener la fuente de las páginas y deambular por Internet para encontrar un analizador html]


Desafortunadamente, supongo que no hay un analizador como Jsoup para C ++ ...

Además de las bibliotecas que ya se mencionan aquí, hay una buena visión general sobre el analizador de C ++ (también en C): bibliotecas de analizador XML C o C ++ gratuitas

Para el análisis, utilicé TinyXML-2 para el análisis DOM (Html-); es una biblioteca muy pequeña (solo 2 archivos) que se ejecuta en la mayoría de los sistemas operativos (incluso los que no son de escritorio).

LibXml

  • Empuje y tire del analizador (DOM, SAX)
  • Validación
  • Soporte XPath y XPointer
  • Plataforma cruzada / buena documentación

Apache Xerxces

  • Empuje y tire del analizador (DOM, SAX)
  • Validación
  • No hay soporte para XPath (¿pero un paquete para esto?)
  • Plataforma cruzada / buena documentación

Si está en la CLI de C ++, consulte NSoup , un puerto Jsoup para .NET.

Algo mas:

¿Quizás puedas combinar un Modelo / Parser DOM y un selector de CSS juntos?


Puedes usar xerces2 como analizador de DOM.

O use Tidy para limpiar el HTML y convertirlo a XHTML y luego analizar el XML con pugixml o un analizador de XML similar. Y dado que pugixml es un analizador no validador, también podría funcionar en el HTML sin formato sin la necesidad de ejecutar el HTML Tidy primero.


Sí, hay una versión HTML del analizador para c ++, échale un vistazo a https://github.com/HamedMasafi/HtmlParser/

Esta biblioteca puede analizar html o css y convertirlo en un modelo de árbol. Puede buscar en html analizado por métodos como: get_by_id, get_by_class_name, get_by_tag_name, y también hay un método de pregunta que puede buscar a través del selector css (solo etiqueta, id, clase, selectores de niños anidados admitidos por ahora).

Después de encontrar un hijo, puede cambiar sus atributos y, al final, puede imprimir un html en std :: string en modo compacto y bonito.


Si está familiarizado con Qt Framework, la forma más conveniente es utilizar QWebElement ( QWebElement here ).

De lo contrario, (como sugiere otra publicación) usar Tidy para convertir HTML a un XML válido y luego usar un analizador XML como libxml++ es una buena opción. Puede encontrar un código de ejemplo que muestra estos dos pasos here .


Si no te importa llamar a Python desde C ++, puedes usar Beautiful Soup . ¡Al menos el nombre es correcto!

En serio, es un buen analizador de HTML sin sentido. No he intentado llamarlo desde C ++, aunque debería ser sencillo.