Web Scraping con VBA
Che cos’è lo scraping dei dati?
Data scraping è la tecnica che aiuta nell’estrazione delle informazioni desiderate da una pagina Web HTML a un file locale presente nel computer locale. Normalmente, un file locale potrebbe corrispondere a un file Excel, file Word, o per dire qualsiasi applicazione di Microsoft Office. Aiuta a canalizzare le informazioni critiche dalla pagina web.
Lo scraping dei dati diventa semplice quando si lavora su un progetto basato sulla ricerca su base giornaliera, e tale progetto è puramente dipendente da Internet e sito web. Per illustrare ulteriormente l’argomento, prendiamo l’esempio di un day trader che gestisce una macro di Excel per estrarre informazioni di mercato da un sito Web finanziario in un foglio Excel utilizzando VBA.
In questo tutorial, imparerai:
- Che cos’è lo scraping dei dati?
- Come preparare la macro di Excel prima di eseguire lo scraping dei dati utilizzando Internet Explorer?
- Come aprire Internet Explorer utilizzando Excel VBA?
- Come aprire il sito Web in Internet Explorer utilizzando VBA?
- Come raschiare le informazioni dal sito Web utilizzando VBA?
Come preparare la macro di Excel prima di eseguire lo scraping dei dati utilizzando Internet Explorer?
Ci sono alcuni prerequisiti che devono essere eseguiti sul file macro di Excel prima di entrare nel processo di raschiamento dei dati in Excel.
Questi prerequisiti sono i seguenti: –
Passaggio 1) Aprire una macro basata su Excel e accedere all’opzione sviluppatore di Excel.
Passo 2) Selezionare l’opzione Visual Basic sotto Developer ribbon.
Passo 3) Inserire un nuovo modulo.
Passo 4) Inizializza una nuova subroutine
Sub test()End sub
Il modulo seguente risultato: –
Passo 5) Accedere all’opzione di riferimento sotto la scheda strumenti e di riferimento di Microsoft HTML Object Library e Microsoft internet control.
I seguenti file devono essere riferiti al modulo in quanto aiuta ad aprire Internet Explorer e facilita lo sviluppo di script macro.
Ora il file Excel è pronto per interagire con Internet Explorer. Il passo successivo sarebbe quello di incorporare script macro che faciliterebbero lo scraping dei dati in HTML.
Come aprire Internet Explorer utilizzando Excel VBA?
Passo 1) Inizializzare la variabile nelle subroutine come mostrato di seguito
Sub test()Dim ie As New InternetExplorer Dim doc As New HTMLDocument
Passo 2) Per aprire Internet Explorer utilizzando VBA, scrivere cioè visibile=vero e premere F5.
Sub test()Dim ie As New InternetExplorer Dim doc As New HTMLDocumentIe.visible=true
Il modulo apparirebbe come segue: –
Come aprire il sito Web in Internet Explorer utilizzando VBA?
Qui, sono passi per aprire il sito Web in Internet exploer utilizzando VBA
Passo 1) Una volta che si è in grado di accedere a Internet Explorer utilizzando Excel VBA, il passo successivo sarebbe incorporare l’accesso di un sito web utilizzando VBA. Ciò è facilitato dall’attributo Navigate, in cui l’URL deve passare come virgolette nell’attributo. Seguire i seguenti passaggi come visualizzato.
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
Passo 2) – Premere F5 per eseguire la macro. La seguente pagina Web verrà aperta come visualizzato
Ora, la macro di Excel è pronta per eseguire le funzioni di scraping. Il passo successivo sarebbe visualizzare come le informazioni possono essere estratte da Internet Explorer utilizzando VBA.
Come raschiare le informazioni dal sito Web utilizzando VBA?
Supponiamo che il commerciante di giorno vuole accedere ai dati dal sito web su base giornaliera. Ogni volta che il commerciante di giorno preme il clic sul pulsante, dovrebbe auto tirare i dati di mercato in Excel.
Dal sito web di cui sopra, sarebbe necessario ispezionare un elemento e osservare come sono strutturati i dati.
Passo 1) Accedi al codice sorgente sottostante di HTML premendo control + 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>
Il codice sorgente sarebbe il seguente: –
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
Come si può vedere che i dati sono strutturati come una singola tabella HTML. Pertanto, al fine di estrarre interi dati dalla tabella html, richiederebbe la progettazione di macro che raccoglie i dati sotto forma di raccolta.
La raccolta verrà quindi incollata in Excel. Per ottenere, i risultati desiderati eseguire i passaggi indicati di seguito – –
Passo 2) Inizializzare il documento Html nella subroutine
Il modulo VBA apparirà come segue: –
Passaggio 3) Inizializza l’elemento di raccolta presente nel documento HTML
Il modulo VBA apparirà come segue: –
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")
Passo 4) Inizializzare le celle del foglio Excel con l’aiuto del ciclo nidificato come mostrato
Il modulo VBA apparirà come segue: –
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")
Excel può essere inizializzato utilizzando l’attributo intervallo del foglio Excel o tramite l’attributo celle del foglio Excel. Per ridurre la complessità dello script VBA, i dati di raccolta vengono inizializzati nell’attributo celle Excel del foglio 1 presente nella cartella di lavoro.
Una volta che lo script macro è pronto, passare e assegnare la subroutine al pulsante Excel e uscire dal modulo di VBA. Etichettare il pulsante come aggiorna o qualsiasi nome adatto che potrebbe essere inizializzato ad esso. Per questo esempio, il pulsante viene inizializzato come aggiornamento.
Passo 5) Premere il pulsante aggiorna per ottenere i sotto indicati uscita
Passo 6) Confrontare i risultati in excel con i risultati di internet explorer
Riepilogo:
- I dati raschiare consente all’utente di raschiare solo le informazioni che l’utente desidera.
- Lo scraping può essere eseguito utilizzando Internet Explorer.
- Il processo di scraping è più lento nel caso di Internet Explorer; tuttavia, fornisce i risultati desiderati all’utente.
- La raschiatura deve essere eseguita con assoluta attenzione e cautela in quanto può danneggiare e bloccare il sistema utilizzato per la raschiatura.