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.
Étape 2) Sélectionnez l’option Visual Basic sous le ruban Développeur.
Étape 3) Insérez un nouveau module.
Étape 4) Initialiser un nouveau sous-programme
Sub test() End sub
Le module donnerait le résultat suivant : –
É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.
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 : –
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
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.
Étape 5) Appuyez sur le bouton d'actualisation pour obtenir la sortie mentionnée ci-dessous
Étape 6) Comparez les résultats dans Excel avec les résultats d'Internet Explorer
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.