Obtenir code source HTML d’une page web 8


Le code VBA qui suit vous permet d'obtenir le code source HTML complet d'une page web. Il s'agit d'un excellent outil pour l'extraction des données d'une page internet car vous obtenez, en quelques secondes, sous forme de chaîne de caractères ( String ) tout le contenu de la page spécifiée.

Vous pouvez ensuite travailler avec cette chaîne pour en récupérer exactement le contenu que vous souhaitez. C'est une méthode idéale pour celui qui veut extraire des données à partir de l'internet de manière massive ou régulière.

Comme on ne télécharge que le code source (=du simple texte; les images, les fichiers JavaScript etc. ne doivent pas être téléchargés), la fonction est extrêmement rapide et vous permets d'obtenir le contenu (= "scraper") de centaines de pages en quelques minutes, voir secondes.

Le code de la fonction VBA qui extrait le contenu d'une page web

La fonction utilise comme paramètre le lien URL de la page web. L'utilisation ou non de la barre oblique ("/") à la fin du lien ne modifie pas la fonctionnalité. Si la page web est inaccessible ou n'existe pas, le résultat de la fonction est l'erreur " #N/A " ( xlErrNA ).

Public Function ExtraireSourceHTML(LienURL As String)
'par: Excel-Malin.com ( http://excel-malin.com )
On Error GoTo ExtraireSourceHTMLErreur

  With CreateObject("MSXML2.XMLHTTP")
    .Open "GET", LienURL, False
    .Send
      If .ReadyState = 4 Then
        If .Status <> 200 Then
            ExtraireSourceHTML = CVErr(xlErrNA)
        Else
            ExtraireSourceHTML = .ResponseText
        End If
      Else
        ExtraireSourceHTML = CVErr(xlErrNA)
      End If
  End With
  
Exit Function
ExtraireSourceHTMLErreur:
ExtraireSourceHTML = CVErr(xlErrNA)
End Function

Exemple pratique de l'extraction de code HTML

Pour illustrer l'utilisation de la fonction ExtraireSourceHTML(), on peut créer une petite procédure en VBA qui va extraire le code source HTML de la page d'accueil du site Wikipedia.org (http://fr.wikipedia.org). Comme résultat, un message (MsgBox) est affiché avec les premiers 350 caractères du code…

Sub ExempleExtractionHTML()
'par: Excel-Malin.com ( http://excel-malin.com )
    On Error GoTo ExempleErreur

Dim MonLienURL As String
MonLienURL = "http://fr.wikipedia.org" '<-- placez ici votre lien
CodeHTML = ExtraireSourceHTML(MonLienURL)

'votre code pour traiter les données obtenues
MsgBox "Apperçu du code HTML de " & MonLienURL & ":" & Chr(13) & Chr(10) & Chr(13) & Chr(10) & _
Left(CodeHTML, 350) '= exemple: affiche un message avec les premiers 350 caractères du code HTML

Exit Sub
ExempleErreur:
    MsgBox "Une erreur est survenue..."
End Sub

 

Automatiser l'extraction des codes HTML avec VBA

Si vous souhaitez de créer un "scraper" pour extraire le code HTML des pages internet de manière régulière (et en récupérer une information particulière), vous pouvez éventuellement créer un fichier "batch" pour automatiser toute votre procédure

Pour aller plus loin en Excel et en VBA

 

29 0




Laissez un commentaire

Votre adresse de messagerie ne sera pas publiée.

8 commentaires sur “Obtenir code source HTML d’une page web

  • Jucyla

    Bonjour,

    merci pour ce code vraiment utile, par contre pourriez vous me dire comment faire pour mettre coller le code source de la page web dans une feuille excel, donc dans a1, a2, a3 etc… plutot que dans un msgbox ?
    Je suis pas trés forte sous excel 🙂

  • Jeremy

    Bonsoir,

    Je souhaite extraire le code html d'une page, plus précisément d'un jeu par navigateur afin de faire des simulation de calculs sur Excel.
    Cependant et malgré le fait que le site internet est bien accessible, J'ai un retour d'erreur 2042 et je ne sais pas trop pourquoi .
    Auriez vous une idée ?

    Pour info, C'est un site en java avec une connexion au démarrage (login et mdp)

    En vous remerciant par avance.

    Cordialement,
    Jeremy

      • excel-malin.com Auteur du billet

        Bonjour Jeremy,
        désolé pour la réponse tardive mais je suis actuellement très pris…

        Dans votre cas, le problème vient probablement du fait que la page est généré par java.
        En fait, pour que mon code fonctionne, il faut que le contenu du site se trouve dans le code source HTML/PHP de la page. Si le contenu de la page est seulement un appel d'un applet Java qui après gère tout "à distance", le contenu ne sera pas exploitable de cette manière.

        Vous pouvez faire le test vous même: une fois la page chargé, ouvrez son code source (clic droit + "afficher la source") et essayez de retrouver l'info qui vous intéresse dans le contenu du code source.

        Bien à vous,
        Martin

        • Jérémy

          Bonjour,

          Aucun problème, mais oubliant parfois des message moi même je me dis que ça peut arriver aux autres^^
          Après avoir fais le test je trouve bien les infos nécessaire sur les différentes pages html.
          Je me demande si ce n'est pas lié a mon explorateur internet, l'extraction html par excel est elle lié a IE ?

          Cordialement,
          Jérémy

          • Jérémy

            Bonjour,

            Désolé je n'ai pas trouvé comment éditer le précédent message.
            comparativement a une autre feuille excel ou cela fonctionne, c'est cette ligne qui fait ressortir l'erreur.
            If .Status 200 Then
            Du coup cela me renvoi l'erreur a la ligne suivante.
            ExtraireSourceHTML = CVErr(xlErrNA)
            En espérant que l'on puisse avancer.

            Cordialement,
            Jérémy

        • Jérémy

          Bonjour,

          Oui c'est encore moi, désolé d'insister mais malgré tous mes "efforts" et tests je n'arrive toujours pas à extraire le code html que je désire, c'est peut être tous simplement impossible.

          Pourtant je vois bien les info nécessaire dans la source de ma page cependant, peut-etre que cela viens du serveur qui bloque une commande nous permettant d'extraire cette source.

          je reste ouvert a toute proposition et vous remercie encore.

          Cordialement,
          Jeremy

          • excel-malin.com Auteur du billet

            Bonjour Jeremy, désolé pour la réponse tardive mais pour le moment, je suis très sollicité et c'est difficile de suivre…

            Ce que vous pouvez faire, c'est m'envoyer l'adresse de la page sur mon email contact@excel-malin.com pour que je puisse tourner le code et voir directement ce qui cloche.

            Je ne promets rien mais je vais regarder et voir si je peux vous aider.
            Bien à vous, Martin