Parser du Html avec QTXml

22 août 2008 par Gaëtan Laisser une réponse »

Bonjour à tous …

Un rapide exemple pour récupérer l’ensemble des liens d’une page web en utilisant l’objet QtXml de Qt4 … toujours mieux que d’utiliser l’objet QRegExp pour récupérer des « urls malformés ».


void crawlerXml(QString &pageWeb) {

//pageWeb ="<div><a href="url1">l</a></div>";
QDomDocument web;
web.setContent(pageWeb);//on met le contenu de la page Web
QDomNodeList nodel= web.elementsByTagName("a");//on cherche les <a>
for(int i=0;i<nodel.count();i++)
{
if(nodel.at(i).hasAttributes())//Si il y a des attributs
for(int j=0;j<nodel.at(i).attributes().count();j++)
{
if(nodel.at(i).attributes().item(j).nodeName()=="href")
{//on cherche les href et on prend leur valeurs.
QString url=nodel.at(i).attributes().item(j).nodeValue();
qDebug()<<"Url : "<<url;
}
}
}
}

Et voilà … rien de compliquer ^^.
Donc, au cas où un jour vous aurez besoin de parser du code Html, pour chercher des infos au lieu d’utiliser des QRegExp qui peuvent mener à des erreurs, cette technique est rapide, puissante et ne coûte rien niveau processeur, je l’utilise pour mon scanneur de vulnérabilité Web (qui crawl l’ensemble des pages de ce blog en moins de 2-3 minutes avec une consommation CPU<5%).

C’est à ce demander pourquoi certain projets écrit en Qt utilisent des scripts externe en python pour parser du Html (cf. QBittorrent), et qui utilise 100% du CPU!!!

Publicité

Laisser un commentaire