Developpez.com - Rubrique .NET

Le Club des Développeurs et IT Pro

Web scraping en C# avec HTML Agility Pack

Un tutoriel de Thomas Levesque

Le 2012-08-18 13:11:28, par tomlev, Rédacteur/Modérateur
Bonjour,

Extraction de données de pages web à l'aide de HTML Agility Pack

Il est souvent utile de récupérer automatiquement des données à partir d'une page web, en analysant le code HTML de la page pour extraire les informations qui nous intéressent. Si on n'utilise pas les outils adéquats, écrire du code pour faire ce genre de chose peut vite devenir fastidieux... Ce tutoriel présente un outil très facile à utiliser pour extraire des données d'une page web : HTML Agility Pack
Lire l'article

N'hésitez pas à noter et commenter l'article dans cette discussion
  Discussion forum
45 commentaires
  • Reward
    Membre confirmé
    Salut,

    C'est excellent je ne connaissais pas du tout cette bibliothèque !

    J'en comprends tout l'intérêt car pour un projet perso, j'ai été amené à faire ce genre de traitement. Et je suis tombé dans le cas numéro 1 , à partir d'un webClient et de recherches fastidieuses dans le flux string Html.

    C'est beaucoup plus souple de cette façon !
  • amezghal
    Membre habitué
    En php j'utilise phpQuery.
    je teste le code jQuery dans la console js et je le copie tout simplement.
  • mermich
    Membre expérimenté
    Salut,

    Très bon article, mais je pense qu'il aurait été utile de mentionner fizzler qui est une surcouche de AgilityPAck et permet d'utiliser des sélecteurs css au lieu de xsl: http://code.google.com/p/fizzler/
  • tomlev
    Rédacteur/Modérateur
    Envoyé par mermich
    Salut,

    Très bon article, mais je pense qu'il aurait été utile de mentionner fizzler qui est une surcouche de AgilityPAck et permet d'utiliser des sélecteurs css au lieu de xsl: http://code.google.com/p/fizzler/
    Salut,

    Je ne l'ai pas mentionné tout simplement parce que je ne connaissais pas... effectivement ça a l'air sympa ! Par contre c'est encore en beta...
  • poincare
    Membre régulier
    Le framework client Ada Web server (AWS) permet le web scraping très facilement :
    exemple http://rosettacode.org/wiki/Web_scraping#Ada
  • tomlev
    Rédacteur/Modérateur
    Envoyé par poincare
    Le framework client Ada Web server (AWS) permet le web scraping très facilement :
    exemple http://rosettacode.org/wiki/Web_scraping#Ada
    Je n'ai pas l'impression que ça ait grand chose à voir... dans le code que tu indiques, AWS sert juste à récupérer le contenu de la page, pas à analyser le contenu. La lecture du HTML se fait ligne par ligne, sans tenir compte de la structure du DOM.
  • umiak
    Futur Membre du Club
    Bonjour,

    Merci pour ce tutoriel, sympas et efficace. L'article stipule à la fin qu'il est possible de modifier des pages html, a tout hasard serait-il également possible de ce s'identifier sur un site web via cette librairie ?
  • tomlev
    Rédacteur/Modérateur
    Envoyé par umiak
    a tout hasard serait-il également possible de ce s'identifier sur un site web via cette librairie ?
    Oui c'est possible, mais ça dépend du type d'authentification utilisé sur le site. Si c'est de l'authentification "Basic", il y a une surcharge de la méthode HtmlWeb.Load qui permet d'indiquer le user/password.
    Si c'est basé sur un formulaire et des cookies, ce sera peut-être un peu plus complexe. Il faudra d'abord poster le user/password pour s'identifier avec HttpWebRequest et récupérer les cookies, puis renvoyer les cookies à chaque requête. A priori ce n'est pas faisable directement avec la classe HtmlWeb, mais rien n'empêche de faire les requêtes avec HttpWebRequest et de parser le résultat avec Html Agility Pack. Il suffit d'utiliser la méthode Load qui prend un Stream en paramètre dans la classe HtmlDocument.
  • noftal
    Membre actif
    Bonjour,

    Je suis débutant sur Visual Studio 2010 Express.

    Au 1.2 vous écrivez : "Dans l'explorateur de solution faites un clic droit sur le nœud Références de votre projet, et choisissez Ajouter une référence"

    Comment fait-on pour faire apparaître le noeud Référence sur un projet dans l'explorateur de solutions ?

    Le lien download de HAP du site http://htmlagilitypack.codeplex.com/ ne fonctionne pas chez moi.

    Peut-on installer HAP sans Nuget dans la mesure où Nuget n'est pas disponible pour la version Express de Visual Studio :

    http://www.developpez.net/forums/d11...t/#post7431310
  • tomlev
    Rédacteur/Modérateur
    Envoyé par noftal
    Comment fait-on pour faire apparaître le noeud Référence sur un projet dans l'explorateur de solutions ?
    Normalement il est toujours là... Sinon, clic droit sur le projet lui-même, "Ajouter une référence"

    Envoyé par noftal
    Le lien download de HAP du site http://htmlagilitypack.codeplex.com/ ne fonctionne pas chez moi.
    Bizarre, je viens de tester et ça fonctionne bien pour moi.
    Je te le mets en PJ du message au cas où tu n'arrives pas à le télécharger

    Envoyé par noftal
    Peut-on installer HAP sans Nuget dans la mesure où Nuget n'est pas disponible pour la version Express de Visual Studio
    Oui, en l'installant manuellement comme j'ai expliqué