Web Scraping mit VBA
Was ist Data Scraping?
Data Scraping ist die Technik, mit der gewünschte Informationen von einer HTML-Webseite in eine lokale Datei auf Ihrem lokalen Computer extrahiert werden können. Normalerweise kann eine lokale Datei einer Excel-Datei, Word-Datei oder einer beliebigen Microsoft Office-Anwendung entsprechen. Es hilft beim Kanalisieren kritischer Informationen von der Webseite.
Das Daten-Scraping wird einfach, wenn Sie täglich an einem forschungsbasierten Projekt arbeiten, und ein solches Projekt ist rein vom Internet und der Website abhängig. Um das Thema weiter zu veranschaulichen, nehmen wir das Beispiel eines Daytraders, der ein Excel-Makro ausführt, um Marktinformationen von einer Finanzwebsite mithilfe von VBA in eine Excel-Tabelle zu ziehen.
In diesem Tutorial lernen Sie:
- Was ist Data Scraping?
- Wie bereite ich ein Excel-Makro vor, bevor ich mit Internet Explorer Daten-Scraping durchführe?
- Wie öffne ich Internet Explorer mit Excel VBA?
- Wie öffne ich eine Website in Internet Explorer mit VBA?
- Wie kratze ich Informationen von der Website mit VBA?
Wie bereite ich ein Excel-Makro vor, bevor ich mit Internet Explorer Daten-Scraping durchführe?
Es gibt bestimmte Voraussetzungen, die für die Excel-Makrodatei erfüllt sein müssen, bevor Sie mit dem Daten-Scraping in Excel beginnen können.
Diese Voraussetzungen sind wie folgt: –
Schritt 1) Öffnen Sie ein Excel-basiertes Makro und greifen Sie auf die Entwickleroption von Excel zu.
Schritt 2) Wählen Sie die Visual Basic-Option unter Developer Ribbon.
Schritt 3) Fügen Sie ein neues Modul ein.
Schritt 4) Initialisieren Sie ein neues Unterprogramm
Sub test()End sub
Das Modul würde wie folgt aussehen: –
Schritt 5) Greifen Sie auf die Referenzoption auf der Registerkarte Tool zu und verweisen Sie auf Microsoft HTML Object Library und Microsoft Internet Control.
Die folgenden Dateien sind auf das Modul zu verweisen, da es beim Öffnen von Internet Explorer hilft und die Entwicklung von Makroskripten erleichtert.
Jetzt kann die Excel-Datei mit dem Internet Explorer interagieren. Der nächste Schritt wäre die Integration von Makroskripten, die das Scraping von Daten in HTML erleichtern würden.
Wie öffne ich Internet Explorer mit Excel VBA?
Schritt 1) Initialisieren Sie die Variable in den Unterprogrammen wie unten angezeigt
Sub test()Dim ie As New InternetExplorer Dim doc As New HTMLDocument
Schritt 2) Um Internet Explorer mit VBA zu öffnen, schreiben Sie z. visible=true und drücken Sie F5.
Sub test()Dim ie As New InternetExplorer Dim doc As New HTMLDocumentIe.visible=true
Das Modul würde wie folgt aussehen: –
Wie öffne ich eine Website in Internet Explorer mit VBA?
Hier sind Schritte zum Öffnen der Website in Internet Exploer mit VBA
Schritt 1) Sobald Sie mit Excel VBA auf den Internet Explorer zugreifen können, würde der nächste Schritt den Zugriff auf eine Website mit VBA beinhalten. Dies wird durch das Attribut Navigate erleichtert, wobei die URL als doppelte Anführungszeichen im Attribut übergeben werden muss. Führen Sie die folgenden angezeigten Schritte aus.
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
Schritt 2) – Drücken Sie F5, um das Makro auszuführen. Die folgende Webseite würde wie angezeigt geöffnet
Jetzt ist das Excel-Makro bereit, die Scraping-Funktionen auszuführen. Im nächsten Schritt wird angezeigt, wie die Informationen mithilfe von VBA aus Internet Explorer extrahiert werden können.
Wie kratze ich Informationen von der Website mit VBA?
Angenommen, der Daytrader möchte täglich auf die Daten von der Website zugreifen. Jedes Mal, wenn der Daytrader den Klick auf die Schaltfläche drückt, sollte er die Marktdaten automatisch in Excel ziehen.
Von der obigen Website aus wäre es notwendig, ein Element zu inspizieren und zu beobachten, wie die Daten strukturiert sind.
Schritt 1) Greifen Sie auf den folgenden HTML-Quellcode zu, indem Sie Strg + Umschalt + I drücken
<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>
Der Quellcode lautet wie folgt: –
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
Wie zu sehen ist, sind die Daten als einzelne HTML-Tabelle strukturiert. Um gesamte Daten aus der HTML-Tabelle abzurufen, müsste daher ein Makro entworfen werden, das die Daten in Form einer Sammlung sammelt.
Die Sammlung würde dann in Excel eingefügt werden. Um die gewünschten Ergebnisse zu erzielen, führen Sie die folgenden Schritte aus: –
Schritt 2) Initialisieren Sie das HTML-Dokument im Unterprogramm
Das VBA-Modul würde wie folgt aussehen– –
Schritt 3) Initialisieren Sie das im HTML-Dokument vorhandene Sammlungselement
Das VBA-Modul würde wie folgt aussehen: –
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")
Schritt 4) Initialisieren Sie die Excel-Tabellenzellen mit Hilfe einer verschachtelten Schleife wie gezeigt
Das VBA-Modul würde wie folgt aussehen: –
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")
Das Excel kann mithilfe des Bereichsattributs des Excel-Blattes oder über das Zellattribut des Excel-Blattes initialisiert werden. Um die Komplexität des VBA-Skripts zu verringern, werden die Erfassungsdaten mit dem Excel-Zellattribut von Blatt 1 initialisiert, das in der Arbeitsmappe vorhanden ist.
Sobald das Makroskript fertig ist, übergeben und weisen Sie die Schaltfläche Subroutine to excel zu und beenden Sie das Modul von VBA. Beschriften Sie die Schaltfläche als aktualisieren oder einen geeigneten Namen, der damit initialisiert werden könnte. In diesem Beispiel wird die Schaltfläche als refresh initialisiert.
Schritt 5) Drücken Sie die Refresh-Taste, um die unten genannte Ausgabe zu erhalten
Schritt 6) Vergleichen Sie die Ergebnisse in Excel mit den Ergebnissen von Internet Explorer
Zusammenfassung:
- Das Daten-Scraping ermöglicht es dem Benutzer, nur die Informationen herauszukratzen, die der Benutzer möchte.
- Scraping kann mit Internet Explorer durchgeführt werden.
- Der Scraping-Prozess ist im Fall von Internet Explorer langsamer, liefert dem Benutzer jedoch die gewünschten Ergebnisse.
- Das Schaben sollte mit absoluter Sorgfalt und Vorsicht durchgeführt werden, da es das zum Schaben verwendete System beschädigen und zum Absturz bringen kann.