Web Scraping con VBA
Che cos'è lo scraping dei dati?
Il data scraping è la tecnica che aiuta nell'estrazione delle informazioni desiderate da una pagina Web HTML in un file locale presente nel computer locale. Normalmente, un file locale potrebbe corrispondere a un file Excel, a un file word o per così dire a qualsiasi Microsoft applicazione d'ufficio. Aiuta a canalizzare le informazioni critiche dalla pagina web.
Lo scraping dei dati diventa semplice quando si lavora quotidianamente su un progetto basato sulla ricerca e tale progetto dipende esclusivamente da Internet e dal sito web. Per illustrare ulteriormente l'argomento, prendiamo l'esempio di un trader giornaliero che esegue una macro Excel per estrarre informazioni di mercato da un sito Web finanziario in un foglio Excel utilizzando VBA.
Come preparare la macro di Excel prima di eseguire la raschiatura dei dati utilizzando Internet Explorer?
Esistono alcuni prerequisiti che devono essere eseguiti sul file macro Excel prima di iniziare il processo di scraping dei dati in Excel.
Questi prerequisiti sono i seguenti: –
Passo 1) Apri una macro basata su Excel e accedi all'opzione sviluppatore di Excel.
Passo 2) Seleziona l'opzione Visual Basic nella barra multifunzione Sviluppatore.
Passo 3) Inserisci un nuovo modulo.
Passo 4) Inizializza una nuova subroutine
Sub test() End sub
Il modulo risulterebbe come segue: –
Passo 5) Accedi all'opzione di riferimento nella scheda Strumenti e riferimento Microsoft Libreria di oggetti HTML e Microsoft controllo internet.
I seguenti file devono essere referenziati al modulo poiché aiutano ad aprire Internet Explorer e facilitano 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, scrivi cioè visibile=vero e premere F5.
Sub test() Dim ie As New InternetExplorer Dim doc As New HTMLDocument Ie.visible=true
Il modulo apparirà come segue: –
Come aprire il sito Web in Internet Explorer utilizzando VBA?
Ecco i passaggi per aprire il sito Web in Internet Explorer utilizzando VBA
Passo 1) Una volta che sei in grado di accedere a Internet Explorer tramite Excel VBA, il passo successivo incorporerebbe l'accesso a un sito web tramite VBA. Ciò è facilitato da Navigate Attribute, in cui l'URL deve essere passato come virgolette doppie nell'attributo. Segui i seguenti passaggi come mostrato.
Sub test() Dim, ie As New InternetExplorer Dim doc As New HTMLDocument Dim ecoll As Object ie.Visible = True ie.navigate"https://demo.guru99.com/test/web-table-element.php" Do DoEvents Loop Until ie.readyState = READYSTATE_COMPLETE
Passaggio 2) – Premi F5 per eseguire la macro. La seguente pagina web verrà aperta come visualizzato
Ora la macro Excel è pronta per eseguire le funzioni di scraping. Il passaggio successivo mostrerà come le informazioni possono essere estratte da Internet Explorer utilizzando VBA.
Come raschiare informazioni dal sito Web utilizzando VBA?
Supponiamo che il day trader voglia accedere quotidianamente ai dati dal sito web. Ogni volta che il trader giornaliero preme il pulsante, dovrebbe inserire automaticamente 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 HTML riportato di seguito 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 InternetExplorer Dim doc As New HTMLDocument Dim ecoll As Object ie.Visible = True ie.navigate "https://demo.guru99.com/test/web-table-element.php" Do DoEvents Loop Until ie.readyState = READYSTATE_COMPLETE Set doc = ie.document
Come si può vedere, i dati sono strutturati come un'unica tabella HTML. Pertanto, per estrarre interi dati dalla tabella html, sarebbe necessaria la progettazione di una macro che raccolga i dati sotto forma di raccolta.
La raccolta verrebbe quindi incollata in Excel. Per ottenere i risultati desiderati eseguire i passaggi indicati di seguito: –
Passo 2) Inizializza il documento Html nella subroutine
Il modulo VBA avrebbe il seguente aspetto: –
Passo 3) Inizializza l'elemento collection presente nel documento HTML
Il modulo VBA avrebbe il seguente aspetto: –
Sub test() Dim ie As New InternetExplorer Dim doc As New HTMLDocument Dim ecoll As Object ie.Visible = True ie.navigate "https://demo.guru99.com/test/web-table-element.php" Do DoEvents Loop Until ie.readyState = READYSTATE_COMPLETE Set doc = ie.document Set ecoll = doc.getElementsByTagName("table")
Passo 4) Inizializza le celle del foglio Excel con l'aiuto del ciclo annidato come mostrato
Il modulo VBA avrebbe il seguente aspetto: –
Sub test() Dim ie As New InternetExplorer Dim doc As New HTMLDocument Dim ecoll As Object ie.Visible = True ie.navigate "https://demo.guru99.com/test/web-table-element.php" Do DoEvents Loop Until ie.readyState = READYSTATE_COMPLETE Set doc = ie.document Set ecoll = doc.getElementsByTagName("table")
L'excel può essere inizializzato tramite l'attributo range del foglio excel o tramite l'attributo cells del foglio excel. Per ridurre la complessità dello script VBA, i dati della raccolta vengono inizializzati all'attributo cells di excel del foglio 1 presente nella cartella di lavoro.
Una volta che lo script macro è pronto, passa e assegna la subroutine al pulsante Excel e esci dal modulo VBA. Etichetta il pulsante come aggiorna o qualsiasi nome adatto che possa essere inizializzato su di esso. Per questo esempio, il pulsante viene inizializzato come aggiornamento.
Passo 5) Premere il pulsante di aggiornamento per ottenere l'output indicato di seguito
Passo 6) Confronta i risultati di Excel con i risultati di Internet Explorer
Sommario
- Lo scraping dei dati consente all'utente di estrarre solo le informazioni che desidera. Per trovare gli strumenti migliori per questo scopo, dai un'occhiata a questo elenco di strumenti di web scraping che possono aiutarti a estrarre in modo efficiente le informazioni desiderate da vari siti web.
- 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 mandare in crash il sistema utilizzato per la raschiatura.