Selenium Esercitazione su VBA Excel: esempio di scraping Web di Chrome
Che cos'è il Data Scraping utilizzando il selenio?
Selenium può essere classificato come strumento di automazione che facilita l'estrazione di informazioni dalle pagine web HTML per eseguire lo scraping web utilizzando Google Chrome.
Come preparare la macro di Excel prima di eseguire la raschiatura dei dati utilizzando Selenium?
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 e chiamala test2.
Sub test2() End sub
Di seguito i risultati nel modulo: –
Passo 5) Accedi all'opzione di riferimento nella scheda Strumenti e riferimento Selenium libreria di tipo. Le seguenti librerie devono essere referenziate al modulo in quanto aiutano ad aprire Google Chrome e facilitano lo sviluppo di script macro.
Ora il file Excel è pronto per interagire con Internet Explorer. Il prossimo passo sarebbe quello di incorporare uno script macro che faciliti lo scraping dei dati in HTML.
Come aprire Google Chrome utilizzando VBA?
Ecco i passaggi per aprire Google Chrome utilizzando VBA
Passo 1) Dichiarare e inizializzare le variabili nella subroutine come mostrato di seguito
Sub test2() Dim driver as new webdriver Dim rowc, cc, columnC as integer
Passo 2) Per aprire Google Chrome utilizzando selenio e VBA, scrivi driver.start “chrome” e premi F5.
Il codice seguente sarebbe:
Sub test2() Dim driver as new webdriver Dim rowc, cc, columnC as integer Driver.start "Chrome" Application.Wait Now+Timevalue("00:00:20") End sub
Il modulo risulterebbe come segue: –
Come aprire il sito Web in Google Chrome utilizzando VBA?
Una volta che sei in grado di accedere a Google Chrome tramite VBA, il passo successivo sarebbe quello di incorporare l'accesso a un sito Web tramite VBA. Ciò è facilitato dalla funzione get in cui l'URL deve essere passato come virgolette doppie nell'attributo.
Seguire i seguenti passaggi come visualizzato
Il modulo apparirà come segue: –
Premere F5 per eseguire la macro.
La seguente pagina web verrebbe aperta in Google Chrome come visualizzato
Sub test2() Dim driver as new webdriver Dim rowc, cc, columnC as integer Driver.start "Chrome" Driver.get "https://demo.guru99.com/test/web-table-element.php" Application.Wait Now+Timevalue("00:00:20") End sub
Ora la macro Excel è pronta per eseguire le attività di scraping. Il passaggio successivo mostrerebbe come le informazioni possono essere estratte applicando selenio e 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. Accedi al codice sorgente HTML seguente 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: –
Come si può vedere, i dati sono strutturati come una singola tabella HTML. Pertanto, per estrarre tutti i dati dalla tabella HTML, sarebbe necessario progettare una macro che estragga le informazioni dell'intestazione della tabella HTML e i dati corrispondenti associati alla tabella. Eseguire le seguenti attività come mostrato: –
Passo 1) Formulare un ciclo for che attraversa le informazioni dell'intestazione HTML come una raccolta. Il driver selenium deve trovare le informazioni sull'intestazione della tabella HTML. Per fare ciò, utilizziamo il metodo FindElementByClass() e FindElementByTag() per eseguire l'attività come visualizzato
Il modulo VBA avrebbe il seguente aspetto: –
Sub test2() Dim driver As New WebDriver Dim rowc, cc, columnC As Integer rowc = 2 Application.ScreenUpdating = False driver.Start "chrome" driver.Get "https://demo.guru99.com/test/web-table-element.php" For Each th In driver.FindElementByClass("dataTable").FindElementByTag("thead").FindElementsByTag("tr") cc = 1 For Each t In th.FindElementsByTag("th") Sheet2.Cells(1, cc).Value = t.Text cc = cc + 1 Next t Next th
Passo 2) Successivamente, il driver selenio localizzerebbe i dati della tabella utilizzando un approccio simile, come menzionato sopra. Devi scrivere il seguente codice: –
Sub test2() Dim driver As New WebDriver Dim rowc, cc, columnC As Integer rowc = 2 Application.ScreenUpdating = False driver.Start "chrome" driver.Get"https://demo.guru99.com/test/web-table-element.php" For Each th In driver.FindElementByClass("dataTable").FindElementByTag("thead").FindElementsByTag("tr") cc = 1 For Each t In th.FindElementsByTag("th") Sheet2.Cells(1, cc).Value = t.Text cc = cc + 1 Next t Next th For Each tr In driver.FindElementByClass("dataTable").FindElementByTag("tbody").FindElementsByTag("tr") columnC = 1 For Each td In tr.FindElementsByTag("td") Sheet2.Cells(rowc, columnC).Value = td.Text columnC = columnC + 1 Next td rowc = rowc + 1 Next tr Application.Wait Now + TimeValue("00:00:20") End Sub
Il modulo vba apparirà come segue: –
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 2 presente nella cartella di lavoro. Inoltre, l'attributo text aiuta a ottenere le informazioni di testo posizionate sotto il tag HTML.
Sub test2() Dim driver As New WebDriver Dim rowc, cc, columnC As Integer rowc = 2 Application.ScreenUpdating = False driver.Start "chrome" driver.Get"https://demo.guru99.com/test/web-table-element.php" For Each th In driver.FindElementByClass("dataTable").FindElementByTag("thead").FindElementsByTag("tr") cc = 1 For Each t In th.FindElementsByTag("th") Sheet2.Cells(1, cc).Value = t.Text cc = cc + 1 Next t Next th For Each tr In driver.FindElementByClass("dataTable").FindElementByTag("tbody").FindElementsByTag("tr") columnC = 1 For Each td In tr.FindElementsByTag("td") Sheet2.Cells(rowc, columnC).Value = td.Text columnC = columnC + 1 Next td rowc = rowc + 1 Next tr Application.Wait Now + TimeValue("00:00:20") End Sub
Il modulo vba apparirà come segue: –
Passo 3) 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 4) Premere il pulsante di aggiornamento per ottenere l'output menzionato di seguito
Passo 5) Confronta i risultati di Excel con i risultati di Google Chrome
Sintesi
- Selenium può essere classificato come strumento di automazione che facilita l'estrazione di informazioni dalle pagine web HTML per eseguire lo scraping web utilizzando Google Chrome.
- Lo scraping su Internet deve essere eseguito con attenzione.
- Normalmente è contro i termini del sito web estrarre informazioni.
- Quando lo scraping viene eseguito tramite il selenio, offre supporto per più browser.
- In altre parole, lo scraper può svolgere compiti simili di raschiatura Firefox, anche Internet Explorer.