Qu'est-ce que le Data Scraping utilisant du sélénium?
Selenium peut être classé comme l'outil d'automatisation qui facilite le grattage d'informations à partir des pages Web HTML pour effectuer un scraping Web à l'aide de Google Chrome.
Dans ce tutoriel, vous apprendrez:
Qu'est-ce que le Data Scraping utilisant du sélénium?
Comment préparer une macro Excel avant d'effectuer le grattage de données à l'aide de Selenium?
Comment ouvrir Google Chrome en utilisant VBA?
Comment ouvrir un site Web dans Google Chrome en utilisant VBA?
Comment supprimer les informations du site Web en utilisant VBA?
Comment préparer une macro Excel avant d'effectuer le grattage de données à l'aide de Selenium?
Il y a certaines conditions préalables qui doivent être effectuées 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.
Sous test2 ()Fin sous
Voici les résultats du module: -
Étape 5) Accédez à l'option de référence sous l'onglet Outil et référencez la bibliothèque de types Selenium. Les bibliothèques suivantes doivent être référencées au module car il aide à ouvrir Google Chrome et facilite le développement de scripts de 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 des données en HTML.
Comment ouvrir Google Chrome en utilisant VBA?
Voici l'étape pour ouvrir Google Chrome en utilisant VBA
Étape 1) Déclarez et initialisez les variables dans le sous-programme comme indiqué ci-dessous
Sous test2 ()Dim driver comme nouveau webdriverDim rowc, cc, columnC comme entier
Étape 2) Pour ouvrir Google Chrome en utilisant le sélénium et VBA, écrivez driver.start "chrome" et appuyez sur F5 .
Ce qui suit serait le code.
Sous test2 ()Dim driver comme nouveau webdriverDim rowc, cc, columnC comme entierDriver.start "Chrome"Application.Wait Now + Timevalue ("00:00:20")Fin sous
Le module résulterait comme suit: -
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 consiste à intégrer l'accès à un site Web à l'aide de VBA. Ceci est facilité par la fonction get dans laquelle l'URL doit passer sous forme de guillemets doubles dans l'attribut.
Suivez les étapes suivantes telles qu'affichées
Le module ressemblerait à ceci: -
Appuyez sur F5 pour exécuter la macro.
La page Web suivante serait ouverte dans Google Chrome comme affiché
Sous test2 ()Dim driver comme nouveau webdriverDim rowc, cc, columnC comme entierDriver.start "Chrome"Driver.get "http://demo.guru99.com/test/web-table-element.php"Application.Wait Now + Timevalue ("00:00:20")Fin sous
La macro Excel est maintenant prête à exécuter les tâches de grattage. L'étape suivante afficherait comment les informations peuvent être extraites en appliquant du sélénium et du VBA.
Comment supprimer les informations du site Web en utilisant 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 serait nécessaire d'inspecter un élément et d'observer comment les données sont structurées. Accédez au code source HTML ci-dessous en appuyant sur Ctrl + Maj + I
Entreprise
Groupe
Pré-fermeture (Rs)
Prix actuel (Rs)
% de changement
Le code source serait le suivant: -
Comme on peut voir que 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 extrait les informations d'en-tête de la table HTML et les données correspondantes associées à la table. Effectuez les tâches suivantes telles qu'affichées: -
Étape 1) Formulez une boucle for qui parcourt les informations d'en-tête HTML en tant que collection. Le pilote sélénium 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'elle est affichée
Le module VBA ressemblerait à ceci: -
Sous test2 ()Dim pilote comme nouveau WebDriverDim rowc, cc, columnC As Integerrowc = 2Application.ScreenUpdating = Fauxdriver.Start "chrome"driver.Obtenez "http://demo.guru99.com/test/web-table-element.php"Pour chaque e pilote In.FindElementByClass ("dataTable"). FindElementByTag ("thead"). FindElementsByTag ("tr")cc = 1Pour chaque t dans th.FindElementsByTag ("th")Feuille2.Cellules (1, cc) .Valeur = t.Textecc = cc + 1SuivantProchain e
Étape 2) Ensuite, le pilote sélénium localiserait les données du tableau en utilisant l'approche similaire, comme mentionné ci-dessus. Vous devez écrire le code suivant: -
Sous test2 ()Dim pilote comme nouveau WebDriverDim rowc, cc, columnC As Integerrowc = 2Application.ScreenUpdating = Fauxdriver.Start "chrome"driver.Obtenez "http://demo.guru99.com/test/web-table-element.php"Pour chaque e pilote In.FindElementByClass ("dataTable"). FindElementByTag ("thead"). FindElementsByTag ("tr")cc = 1Pour chaque t dans th.FindElementsByTag ("th")Feuille2.Cellules (1, cc) .Valeur = t.Textecc = cc + 1SuivantProchain ePour chaque tr In driver.FindElementByClass ("dataTable"). FindElementByTag ("tbody"). FindElementsByTag ("tr")colonneC = 1Pour chaque td dans tr.FindElementsByTag ("td")Sheet2.Cells (rowc, columnC) .Value = td.TextcolonneC = colonneC + 1Td suivantrowc = rowc + 1Prochaine trApplication.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 collection sont initialisées à l'attribut excel cells de la feuille 2 présente dans le classeur. De plus, l'attribut text aide à placer les informations textuelles sous la balise HTML.
Sous test2 ()Dim pilote comme nouveau WebDriverDim rowc, cc, columnC As Integerrowc = 2Application.ScreenUpdating = Fauxdriver.Start "chrome"driver.Obtenez "http://demo.guru99.com/test/web-table-element.php"Pour chaque e pilote In.FindElementByClass ("dataTable"). FindElementByTag ("thead"). FindElementsByTag ("tr")cc = 1Pour chaque t dans th.FindElementsByTag ("th")Feuille2.Cellules (1, cc) .Valeur = t.Textecc = cc + 1SuivantProchain ePour chaque tr In driver.FindElementByClass ("dataTable"). FindElementByTag ("tbody"). FindElementsByTag ("tr")colonneC = 1Pour chaque td dans tr.FindElementsByTag ("td")Sheet2.Cells (rowc, columnC) .Value = td.TextcolonneC = colonneC + 1Td suivantrowc = rowc + 1Prochaine trApplication.Wait Now + TimeValue ("00:00:20")End Sub
Le module vba ressemblerait à ceci: -
Étape 3) Une fois que le script de macro est prêt, passez et attribuez le sous-programme au bouton Excel et quittez le module de VBA. Étiquetez le bouton comme actualisation ou tout 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 grattage d'informations à partir des pages Web HTML pour effectuer un scraping Web à l'aide de Google Chrome.
Le grattage sur Internet doit être effectué avec soin.
Il est normalement contraire aux termes du site Web de récupérer des informations.
Lorsque le grattage est effectué via le sélénium, il offre une prise en charge de plusieurs navigateurs.
En d'autres termes, le grattoir peut effectuer des tâches similaires de grattage via Firefox, Internet Explorer également.