Selenium Tutoriel VBA Excel : exemple de Chrome Web Scraping
Qu’est-ce que le Data Scraping utilisant du sélénium ?
Selenium peut être classé comme l'outil d'automatisation qui facilite le scraping d'informations à partir des pages Web HTML pour effectuer le scraping Web à l'aide de Google Chrome.
Comment préparer une macro Excel avant d'effectuer un grattage de données à l'aide Selenium?
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) Initialisez un nouveau sous-programme et nommez-le test2.
Sub test2() End sub
Voici les résultats du module : –
Étape 5) Accédez à l'option de référence sous l'onglet outil et référence Selenium bibliothèque de types. Les bibliothèques suivantes doivent être référencées dans le module car elles aident à ouvrir Google Chrome et facilitent le développement de scripts macro.
Le fichier Excel est maintenant prêt à interagir avec Internet Explorer. Les prochaines étapes consisteraient à incorporer un script de macro qui faciliterait la récupération de données en HTML.
Comment ouvrir Google Chrome vous utilisez VBA ?
Voici les étapes pour ouvrir Google Chrome en utilisant VBA
Étape 1) Déclarez et initialisez les variables dans le sous-programme comme affiché ci-dessous
Sub test2() Dim driver as new webdriver Dim rowc, cc, columnC as integer
Étape 2) Pour ouvrir Google Chrome à l'aide de Selenium et VBA, écrivez driver.start « chrome » et appuyez sur F5.
Ce qui suit serait le code.
Sub test2() Dim driver as new webdriver Dim rowc, cc, columnC as integer Driver.start "Chrome" Application.Wait Now+Timevalue("00:00:20") End sub
Le module donnerait le résultat suivant : –
Comment ouvrir un site Web dans Google Chrome en utilisant VBA ?
Une fois que vous êtes en mesure d'accéder à Google Chrome à l'aide de VBA, l'étape suivante consisterait à intégrer l'accès à un site Web à l'aide de VBA. Ceci est facilité par la fonction get dans laquelle l'URL doit être passée sous forme de guillemets doubles dans l'attribut.
Suivez les étapes suivantes comme affiché
Le module ressemblerait à ceci : –
Appuyez sur F5 pour exécuter la macro.
La page Web suivante serait ouverte dans Google Chrome comme affichée
Sub test2() Dim driver as new webdriver Dim rowc, cc, columnC as integer Driver.start "Chrome" Driver.get "https://demo.guru99.com/test/web-table-element.php" Application.Wait Now+Timevalue("00:00:20") End sub
La macro Excel est maintenant prête à effectuer les tâches de scraping. L'étape suivante montrerait comment les informations peuvent être extraites en appliquant du sélénium et du 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. 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 : –
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 du tableau HTML, il faudrait concevoir une macro qui extrait les informations d'en-tête du tableau HTML et les données correspondantes associées au tableau. Effectuez les tâches suivantes comme affiché : –
Étape 1) Formulez une boucle for qui parcourt les informations d'en-tête HTML sous forme de collection. Le pilote Selenium doit trouver les informations d'en-tête du tableau HTML. Pour ce faire, nous utilisons les méthodes FindElementByClass() et FindElementByTag() pour effectuer la tâche telle qu'affichée.
Le module VBA ressemblerait à ceci : –
Sub test2() Dim driver As New WebDriver Dim rowc, cc, columnC As Integer rowc = 2 Application.ScreenUpdating = False driver.Start "chrome" driver.Get "https://demo.guru99.com/test/web-table-element.php" For Each th In driver.FindElementByClass("dataTable").FindElementByTag("thead").FindElementsByTag("tr") cc = 1 For Each t In th.FindElementsByTag("th") Sheet2.Cells(1, cc).Value = t.Text cc = cc + 1 Next t Next th
Étape 2) Ensuite, le pilote Selenium localiserait les données de la table en utilisant la même approche que celle mentionnée ci-dessus. Vous devez écrire le code suivant : –
Sub test2() Dim driver As New WebDriver Dim rowc, cc, columnC As Integer rowc = 2 Application.ScreenUpdating = False driver.Start "chrome" driver.Get"https://demo.guru99.com/test/web-table-element.php" For Each th In driver.FindElementByClass("dataTable").FindElementByTag("thead").FindElementsByTag("tr") cc = 1 For Each t In th.FindElementsByTag("th") Sheet2.Cells(1, cc).Value = t.Text cc = cc + 1 Next t Next th For Each tr In driver.FindElementByClass("dataTable").FindElementByTag("tbody").FindElementsByTag("tr") columnC = 1 For Each td In tr.FindElementsByTag("td") Sheet2.Cells(rowc, columnC).Value = td.Text columnC = columnC + 1 Next td rowc = rowc + 1 Next tr Application.Wait Now + TimeValue("00:00:20") End Sub
Le module vba ressemblerait à ceci : –
L'Excel peut être initialisé au moyen de l'attribut Range de la feuille Excel ou via l'attribut Cells de la feuille Excel. Pour réduire la complexité du script VBA, les données de collecte sont initialisées à l'attribut cellules Excel de la feuille 2 présente dans le classeur. De plus, l'attribut text aide à placer les informations textuelles sous la balise HTML.
Sub test2() Dim driver As New WebDriver Dim rowc, cc, columnC As Integer rowc = 2 Application.ScreenUpdating = False driver.Start "chrome" driver.Get"https://demo.guru99.com/test/web-table-element.php" For Each th In driver.FindElementByClass("dataTable").FindElementByTag("thead").FindElementsByTag("tr") cc = 1 For Each t In th.FindElementsByTag("th") Sheet2.Cells(1, cc).Value = t.Text cc = cc + 1 Next t Next th For Each tr In driver.FindElementByClass("dataTable").FindElementByTag("tbody").FindElementsByTag("tr") columnC = 1 For Each td In tr.FindElementsByTag("td") Sheet2.Cells(rowc, columnC).Value = td.Text columnC = columnC + 1 Next td rowc = rowc + 1 Next tr Application.Wait Now + TimeValue("00:00:20") End Sub
Le module vba ressemblerait à ceci : –
Étape 3) 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 4) Appuyez sur le bouton d'actualisation pour obtenir la sortie mentionnée ci-dessous
Étape 5) Comparez les résultats dans Excel avec les résultats de Google Chrome
Résumé
- Selenium peut être classé comme l'outil d'automatisation qui facilite le scraping d'informations à partir des pages Web HTML pour effectuer le scraping Web à l'aide de Google Chrome.
- Le scraping sur Internet doit être effectué avec soin.
- Il est normalement contraire aux termes du site Web de supprimer des informations.
- Lorsque le scraping est effectué via Selenium, il offre la prise en charge de plusieurs navigateurs.
- En d’autres termes, le grattoir peut effectuer des tâches similaires de grattage à travers Firefox, Internet Explorer également.