Existe-t-il des recommandations pour une LIB C / CPP qui peut être utilisée facilement (autant que possible) Analyser / itérer / manipuler des flux HTML / des fichiers en supposant que certains puissent être mal formés, c'est-à-dire des balises non fermées, etc. P>
beauxoup p>
4 Réponses :
Je n'ai utilisé que libcurl C ++ pour ce type de chose mais trouvé qu'il serait assez bon et utilisable. Je ne sais pas comment ça va faire face à HTML cassé. P>
HTMLPARSER de libxml est facile à utiliser (tutoriel simple ci-dessous) et fonctionne bien même sur HTML malformé.
EDIT STRY>: Le blog original est N'est plus accessible, je n'ai donc pas collé le contenu ici. P> analyse (x) HTML en C est souvent considéré comme une tâche difficile.
Il est vrai que C n'est pas la langue la plus facile à utiliser pour développer un analyseur.
Heureusement, LibXML2's Le module HTMLParser vient à la rescousse. Ainsi, comme promis, voici un petit tutoriel expliquant comment utiliser HTMLParser de LibXML2 pour analyser (x) HTML. P>
Premièrement, vous devez créer un contexte d'analyseur. Vous avez de nombreuses fonctions pour cela, en fonction de la manière dont vous souhaitez nourrir des données à l'analyseur. Je vais utiliser
htmlcreepushparserctxt () code>, car il fonctionne avec des tampons de mémoire. P>
void walkTree(xmlNode * a_node)
{
xmlNode *cur_node = NULL;
xmlAttr *cur_attr = NULL;
for (cur_node = a_node; cur_node; cur_node = cur_node->next)
{
// do something with that node information, like... printing the tag's name and attributes
printf("Got tag : %s\n", cur_node->name)
for (cur_attr = cur_node->properties; cur_attr; cur_attr = cur_attr->next)
{
printf(" ->; with attribute : %s\n", cur_attr->name);
}
walkTree(cur_node->children);
}
}
walkTree(xmlDocGetRootElement(parser->myDoc));
Le lien pour le tutoriel est cassé
@gidim Merci de signaler, je l'ai réparé.
Essayez d'utiliser SIP et courez belle -soup sur elle pourrait vous aider. P>
Plus de détails sur le thread de liaison ci-dessous. OpenFrameworks + Python P>
Vous pouvez utiliser Google GUMBO-PARSER
GUMBO est une mise en œuvre de l'algorithme d'analyse HTML5 implémenté comme une bibliothèque de C99 pure sans dépendances extérieures. Il est conçu pour servir de bloc de construction pour d'autres outils et bibliothèques telles que des prêteurs, des validateurs, des langages de modèles et des outils de refactorisation et d'analyse. P> blockQuote>
xxx pré> Il y a aussi une liaison C ++ pour cette bibliothèque gumbo -Query p>
une bibliothèque C ++ qui fournit des sélecteurs de type JQuery pour Google's Gumbo-Parser. P> blockQuote>
xxx pré> p>