Web Scraping avec VBA

Table des matières:

Anonim

Qu'est-ce que le grattage de données?

Le grattage de données est la technique qui aide à l'extraction des 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 à n'importe quelle application Microsoft Office. Il aide à canaliser les informations critiques à partir 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 est purement dépendant 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 dans une feuille Excel à l'aide de VBA.

Dans ce tutoriel, vous apprendrez:

  • Qu'est-ce que le grattage de données?
  • Comment préparer une macro Excel avant d'effectuer le grattage de données à l'aide d'Internet Explorer?
  • Comment ouvrir Internet Explorer à l'aide d'Excel VBA?
  • Comment ouvrir un site Web dans Internet Explorer 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 d'Internet Explorer?

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

Sub test()End sub

Le module résulterait comme suit: -

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

Les fichiers suivants doivent être référencés dans le module car il aide à ouvrir Internet Explorer et facilite 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 des données en HTML.

Comment ouvrir Internet Explorer à l'aide d'Excel VBA?

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

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

Étape 2) Pour ouvrir Internet Explorer en utilisant VBA, écrivez ie visible = true et appuyez sur F5.

Sub test()Dim ie As New InternetExplorerDim doc As New HTMLDocumentIe.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 Exploer en utilisant VBA

Étape 1) Une fois que vous êtes en mesure d'accéder à Internet Explorer en utilisant Excel VBA, l'étape suivante comprendra l'accès à un site Web en utilisant VBA. Ceci est facilité par l'attribut Navigate, dans lequel l'URL doit passer sous forme de guillemets dans l'attribut. Suivez les étapes suivantes telles qu'affichées.

Sub test()Dim, ie As New InternetExplorerDim doc As New HTMLDocumentDim ecoll As Objectie.Visible = Trueie.navigate"http://demo.guru99.com/test/web-table-element.php"DoDoEventsLoop Until ie.readyState = READYSTATE_COMPLETE

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

À présent, la macro Excel est prête à exécuter les fonctions de grattage. L'étape suivante afficherait comment les informations peuvent être extraites d'Internet Explorer à l'aide de 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.

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

Le code source serait le suivant: -

Sub test()Dim ie As New InternetExplorerDim doc As New HTMLDocumentDim ecoll As Objectie.Visible = Trueie.navigate "http://demo.guru99.com/test/web-table-element.php"DoDoEventsLoop Until ie.readyState = READYSTATE_COMPLETESet doc = ie.document

Comme on peut voir que les données sont structurées comme un seul tableau HTML. Par conséquent, pour 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 atteindre les résultats souhaités, effectuez les étapes ci-dessous: -

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

Le module VBA ressemblerait à ceci: -

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

Le module VBA ressemblerait à ceci: -

Sub test()Dim ie As New InternetExplorerDim doc As New HTMLDocumentDim ecoll As Objectie.Visible = Trueie.navigate "http://demo.guru99.com/test/web-table-element.php"DoDoEventsLoop Until ie.readyState = READYSTATE_COMPLETESet doc = ie.documentSet ecoll = doc.getElementsByTagName("table")

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

Le module VBA ressemblerait à ceci: -

Sub test()Dim ie As New InternetExplorerDim doc As New HTMLDocumentDim ecoll As Objectie.Visible = Trueie.navigate "http://demo.guru99.com/test/web-table-element.php"DoDoEventsLoop Until ie.readyState = READYSTATE_COMPLETESet doc = ie.documentSet ecoll = doc.getElementsByTagName("table")

L'excel peut être initialisé à l'aide 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 1 présente dans le classeur.

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é comme une actualisation.

É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 des données permet à l'utilisateur de récupérer uniquement les informations souhaitées par l'utilisateur.
  • Le grattage peut être effectué à l'aide d'Internet Explorer.
  • Le processus de grattage 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 un soin et une prudence absolus car il peut endommager et planter le système utilisé pour le grattage.
CompanyGroupPre Close (Rs)Current Price (Rs)% Change