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.

Préparer la macro Excel avant d'effectuer le grattage de données

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

Préparer la macro Excel avant d'effectuer le grattage de données

Étape 3) Insérez un nouveau module.

Préparer la macro Excel avant d'effectuer le grattage de données

Étape 4) Initialisez un nouveau sous-programme et nommez-le test2.

Sub test2()
End sub

Voici les résultats du module : –

Préparer la macro Excel avant d'effectuer le grattage de données

É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.

Préparer la macro Excel avant d'effectuer le grattage de données

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 : –

Open Google Chrome Utilisation de VBA

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 : –

Ouvrir le site Web dans Google Chrome Utilisation de VBA

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

Ouvrir le site Web dans Google Chrome Utilisation de VBA

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 : –

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

É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.

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

Étape 4) 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 5) Comparez les résultats dans Excel avec les résultats de Google Chrome

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

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.