Scraping Web avec VBA

Qu'est-ce que le Data Scraping ?

Le grattage de données est la technique qui permet d'extraire les informations souhaitées d'une page Web HTML vers un fichier local présent sur votre ordinateur local. Normalement, un fichier local peut correspondre à un fichier Excel, un fichier Word, ou pour dire n'importe quel Microsoft application bureautique. Cela aide à canaliser les informations critiques de la page Web.

Le grattage de données devient simple lorsque l'on travaille quotidiennement sur un projet basé sur la recherche, et un tel projet dépend uniquement d'Internet et du site Web. Pour illustrer davantage le sujet, prenons l'exemple d'un day trader qui exécute une macro Excel pour extraire des informations de marché d'un site Web financier vers une feuille Excel à l'aide de VBA.

Comment préparer une macro Excel avant d'effectuer du Data Scraping à l'aide d'Internet Explorer ?

Certaines conditions préalables doivent être remplies sur le fichier de macro Excel avant de se lancer dans le processus de récupération de données dans Excel.

Ces prérequis sont les suivants : –

Étape 1) Ouvrez une macro basée sur Excel et accédez à l'option développeur d'Excel.

Préparez la macro Excel avant d'effectuer le grattage de données à l'aide d'Internet Explorer

Étape 2) Sélectionnez l’option Visual Basic sous le ruban Développeur.

Préparez la macro Excel avant d'effectuer le grattage de données à l'aide d'Internet Explorer

Étape 3) Insérez un nouveau module.

Préparez la macro Excel avant d'effectuer le grattage de données à l'aide d'Internet Explorer

Étape 4) Initialiser un nouveau sous-programme

Sub test()
End sub

Le module donnerait le résultat suivant : –

Préparez la macro Excel avant d'effectuer le grattage de données à l'aide d'Internet Explorer

Étape 5) Accédez à l'option de référence sous l'onglet outil et référence Microsoft Bibliothèque d'objets HTML et Microsoft contrôle d'Internet.

Les fichiers suivants doivent être référencés au module car ils facilitent l'ouverture d'Internet Explorer et facilitent le développement de scripts de macro.

Préparez la macro Excel avant d'effectuer le grattage de données à l'aide d'Internet Explorer

Le fichier Excel est maintenant prêt à interagir avec Internet Explorer. La prochaine étape consisterait à incorporer des scripts de macro qui faciliteraient la récupération de données en HTML.

Comment ouvrir Internet Explorer avec Excel VBA ?

Étape 1) Initialisez la variable dans les sous-programmes comme affiché ci-dessous

Sub test()
Dim ie As New InternetExplorer 
Dim doc As New HTMLDocument

Étape 2) Pour ouvrir Internet Explorer à l'aide de VBA, écrivez c'est-à-dire visible = vrai et appuyez sur F5.

Sub test()
Dim ie As New InternetExplorer 
Dim doc As New HTMLDocument
Ie.visible=true

Le module ressemblerait à ceci : –

Ouvrez Internet Explorer à l'aide d'Excel VBA

Ouvrez Internet Explorer à l'aide d'Excel VBA

Comment ouvrir un site Web dans Internet Explorer en utilisant VBA ?

Voici les étapes pour ouvrir un site Web dans Internet Explorer à l'aide de VBA

Étape 1) Une fois que vous êtes en mesure d'accéder à Internet Explorer à l'aide d'Excel VBA, l'étape suivante consisterait à intégrer l'accès à un site Web à l'aide de VBA. Ceci est facilité par Navigate Attribute, dans lequel l'URL doit être passée sous forme de guillemets doubles dans l'attribut. Suivez les étapes suivantes comme affiché.

Sub test()
Dim, ie As New InternetExplorer
Dim doc As New HTMLDocument
Dim ecoll As Object
ie.Visible = True
ie.navigate"http://demo.guru99.com/test/web-table-element.php"
Do
DoEvents
Loop Until ie.readyState = READYSTATE_COMPLETE

Étape 2) - Appuyez sur F5 pour exécuter la macro. La page Web suivante s'ouvrirait telle qu'elle est affichée

Ouvrir un site Web dans Internet Explorer en utilisant VBA

Maintenant, la macro Excel est prête à exécuter les fonctions de scraping. L'étape suivante afficherait comment les informations peuvent être extraites d'Internet Explorer à l'aide de VBA.

Comment récupérer des informations sur un site Web à l’aide de VBA ?

Supposons que le day trader souhaite accéder quotidiennement aux données du site Web. Chaque fois que le day trader appuie sur le bouton, il doit automatiquement extraire les données du marché dans Excel.

À partir du site Web ci-dessus, il faudrait inspecter un élément et observer la structure des données.

Étape 1) Accédez au code source HTML ci-dessous en appuyant sur Ctrl + Shift + I

<table class="datatable">
<thead>
<tr>
<th>Company</th>
<th>Group</th>
<th>Pre Close (Rs)</th>
<th>Current Price (Rs)</th>
<th>% Change</th>
</tr>

Le code source serait le suivant : –

Sub test()
Dim ie As New InternetExplorer
Dim doc As New HTMLDocument
Dim ecoll As Object
ie.Visible = True
ie.navigate "http://demo.guru99.com/test/web-table-element.php"
Do
DoEvents
Loop Until ie.readyState = READYSTATE_COMPLETE
Set doc = ie.document

Comme on peut le voir, les données sont structurées comme un seul tableau HTML. Par conséquent, afin d’extraire des données entières de la table HTML, il faudrait concevoir une macro qui collecte les données sous la forme d’une collection.

La collection serait ensuite collée dans Excel. Pour obtenir les résultats souhaités, suivez les étapes mentionnées ci-dessous : –

Étape 2) Initialisez le document HTML dans le sous-programme

Le module VBA ressemblerait à ceci : –

Étape 3) Initialiser l'élément de collection présent dans le document HTML

Le module VBA ressemblerait à ceci : –

Sub test()
Dim ie As New InternetExplorer
Dim doc As New HTMLDocument
Dim ecoll As Object
ie.Visible = True
ie.navigate "http://demo.guru99.com/test/web-table-element.php"
Do
DoEvents
Loop Until ie.readyState = READYSTATE_COMPLETE
Set doc = ie.document
Set ecoll = doc.getElementsByTagName("table")

Étape 4) Initialisez les cellules de la feuille Excel à l'aide d'une boucle imbriquée, comme indiqué

Le module VBA ressemblerait à ceci : –

Sub test()
Dim ie As New InternetExplorer
Dim doc As New HTMLDocument
Dim ecoll As Object

ie.Visible = True
ie.navigate "http://demo.guru99.com/test/web-table-element.php"
Do
DoEvents
Loop Until ie.readyState = READYSTATE_COMPLETE
Set doc = ie.document
Set ecoll = doc.getElementsByTagName("table")

L'Excel peut être initialisé à l'aide de l'attribut range de la feuille Excel ou via l'attribut cellules de la feuille Excel. Pour réduire la complexité du script VBA, les données de collecte sont initialisées à l'attribut de cellules Excel de la feuille 1 présente dans le classeur.

Une fois le script de macro prêt, passez et attribuez le sous-programme au bouton Excel et quittez le module de VBA. Étiquetez le bouton comme Actualiser ou tout autre nom approprié qui pourrait y être initialisé. Pour cet exemple, le bouton est initialisé en tant que rafraîchissement.

Récupérer des informations sur un site Web à l'aide de VBA

Étape 5) Appuyez sur le bouton d'actualisation pour obtenir la sortie mentionnée ci-dessous

Récupérer des informations sur un site Web à l'aide de VBA

Étape 6) Comparez les résultats dans Excel avec les résultats d'Internet Explorer

Récupérer des informations sur un site Web à l'aide de VBA

Résumé

  • Le grattage de données permet à l'utilisateur de récupérer uniquement les informations qu'il souhaite. Pour trouver les meilleurs outils à cet effet, jetez un œil à cette liste d’outils de web scraping qui peuvent vous aider à extraire efficacement les informations souhaitées de divers sites Web.
  • Le scraping peut être effectué à l’aide d’Internet Explorer.
  • Le processus de scraping est plus lent dans le cas d’Internet Explorer ; cependant, il fournit les résultats souhaités à l'utilisateur.
  • Le grattage doit être effectué avec une attention et une prudence absolues, car cela peut endommager et faire tomber le système utilisé pour le grattage.