8
votes

Version C / CPP de Beaulsoup surtout à la manipulation HTML malformée

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.

beauxoup


0 commentaires

4 Réponses :


-1
votes

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é.


0 commentaires

8
votes

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));


2 commentaires

Le lien pour le tutoriel est cassé


@gidim Merci de signaler, je l'ai réparé.



-4
votes

Essayez d'utiliser SIP et courez belle -soup sur elle pourrait vous aider.

Plus de détails sur le thread de liaison ci-dessous. OpenFrameworks + Python


0 commentaires

1
votes

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. xxx

Il y a aussi une liaison C ++ pour cette bibliothèque gumbo -Query

une bibliothèque C ++ qui fournit des sélecteurs de type JQuery pour Google's Gumbo-Parser. xxx


0 commentaires