Obtenir code source HTML d’une page web

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 en HTML (= 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 ( https://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…

Notez que pour que le code suivant fonctionne, vous avez besoin d'ajouter dans votre Module également le code de la fonction principale – vous devez donc avoir dans votre projet deux codes VBA – la fonction même et la procédure qui suit.

Sub ExempleExtractionHTML()
'par: Excel-Malin.com ( https://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 "webscraper" 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… Et le code VBA pour extraire une partie spécifique du texte pourrait également vous être utile pour extraire exactement l'information dont vous avez besoin…

Pour aller plus loin en Excel et en VBA

 

90 0



Laissez un commentaire

Votre adresse e-mail ne sera pas publiée.

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