Selenium Tutorial VBA Excel: Exemplu de răzuire web Chrome
Ce este Data Scraping folosind seleniu?
Selenium poate fi clasificat ca instrument de automatizare care facilitează răzuirea informațiilor din paginile web HTML pentru a efectua scraping web folosind Google Chrome.
Cum să pregătiți Excel Macro înainte de a efectua Data Scraping folosind Selenium?
Există anumite cerințe preliminare care trebuie efectuate pe fișierul macro excel înainte de a intra în procesul de răzuire a datelor în Excel.
Aceste premise sunt următoarele: -
Pas 1) Deschideți o macrocomandă bazată pe Excel și accesați opțiunea de dezvoltator a Excel.
Pas 2) Selectați opțiunea Visual Basic din Panglică pentru dezvoltatori.
Pas 3) Introduceți un modul nou.
Pas 4) Inițializați o nouă subrutină și denumiți-o test2.
Sub test2() End sub
Următoarele ar fi rezultatele din modul: –
Pas 5) Accesați opțiunea de referință din fila instrument și referință Selenium biblioteca de tipuri. Următoarele biblioteci trebuie să facă referire la modul, deoarece ajută la deschiderea Google Chrome și facilitează dezvoltarea scripturilor macro.
Acum fișierul Excel este gata să interacționeze cu Internet Explorer. Următorii pași ar fi încorporarea unui script macro care ar facilita scraping-ul de date în HTML.
Cum se deschide Google Chrome folosind VBA?
Iată pasul de deschis Google Chrome folosind VBA
Pas 1) Declarați și inițializați variabilele din subrutină așa cum este afișat mai jos
Sub test2() Dim driver as new webdriver Dim rowc, cc, columnC as integer
Pas 2) Pentru a deschide Google Chrome folosind seleniu și VBA, scrieți driver.start „chrome” și apăsați F5.
Următorul ar fi codul.
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
Modulul ar rezulta după cum urmează: -
Cum se deschide site-ul web în Google Chrome folosind VBA?
Odată ce puteți accesa Google Chrome folosind VBA, următorul pas ar fi să încorporați accesarea unui site web folosind VBA. Acest lucru este facilitat de funcția get în care URL-ul trebuie să treacă ca ghilimele duble în atribut.
Urmați următorii pași așa cum sunt afișați
Modulul ar arăta după cum urmează: -
Apăsați F5 pentru a executa macro-ul.
Următoarea pagină web va fi deschisă în Google Chrome așa cum este afișat
Sub test2() Dim driver as new webdriver Dim rowc, cc, columnC as integer Driver.start "Chrome" Driver.get "http://demo.guru99.com/test/web-table-element.php" Application.Wait Now+Timevalue("00:00:20") End sub
Acum macrocomanda excel este gata pentru a efectua sarcinile de răzuire. Următorul pas ar afișa modul în care informațiile pot fi extrase prin aplicarea seleniului și VBA.
Cum să răzuiți informații de pe site folosind VBA?
Să presupunem că comerciantul zilnic dorește să acceseze datele de pe site-ul web zilnic. De fiecare dată când comerciantul apasă pe butonul, acesta ar trebui să tragă automat datele pieței în Excel.
De pe site-ul de mai sus, ar fi necesar să se inspecteze un element și să se observe modul în care sunt structurate datele. Accesați codul sursă HTML de mai jos apăsând 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>
Codul sursă ar fi următorul: -
După cum se poate observa că datele sunt structurate ca un singur tabel HTML. Prin urmare, pentru a extrage date întregi din tabelul HTML, ar fi nevoie de proiectarea unei macrocomenzi care extrage informațiile de antet ale tabelului HTML și datele corespunzătoare asociate cu tabelul. Efectuați următoarele sarcini așa cum sunt afișate: –
Pas 1) Formulați o buclă for care rulează prin informațiile din antetul HTML ca o colecție. Driverul seleniu trebuie să găsească informațiile de antet ale tabelului HTML. Pentru a face acest lucru, folosim metoda FindElementByClass() și FindElementByTag() pentru a efectua sarcina așa cum este afișată
Modulul VBA ar arăta după cum urmează:
Sub test2() Dim driver As New WebDriver Dim rowc, cc, columnC As Integer rowc = 2 Application.ScreenUpdating = False driver.Start "chrome" driver.Get "http://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
Pas 2) Apoi, driverul de seleniu va localiza datele din tabel folosind o abordare similară, așa cum s-a menționat mai sus. Trebuie să scrieți următorul cod: -
Sub test2() Dim driver As New WebDriver Dim rowc, cc, columnC As Integer rowc = 2 Application.ScreenUpdating = False driver.Start "chrome" driver.Get"http://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
Modulul vba ar arăta după cum urmează:
Excel-ul poate fi inițializat prin intermediul atributului Range al foii Excel sau prin atributul celule al foii Excel. Pentru a reduce complexitatea script-ului VBA, datele de colectare sunt inițializate la atributul excel cells al foii 2 prezent în registrul de lucru. În plus, atributul text ajută la obținerea informațiilor text plasate sub eticheta HTML.
Sub test2() Dim driver As New WebDriver Dim rowc, cc, columnC As Integer rowc = 2 Application.ScreenUpdating = False driver.Start "chrome" driver.Get"http://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
Modulul vba ar arăta după cum urmează:
Pas 3) Odată ce macroscriptul este gata, treceți și atribuiți subrutinei butonului Excel și ieșiți din modulul VBA. Etichetați butonul ca reîmprospătare sau orice nume potrivit care ar putea fi inițializat la acesta. Pentru acest exemplu, butonul este inițializat ca reîmprospătare.
Pas 4) Apăsați butonul de reîmprospătare pentru a obține rezultatul menționat mai jos
Pas 5) Comparați rezultatele în excel cu rezultatele google chrome
Rezumat
- Selenium poate fi clasificat ca instrument de automatizare care facilitează răzuirea informațiilor din paginile web HTML pentru a efectua scraping web folosind Google Chrome.
- Razuirea pe internet trebuie efectuată cu atenție.
- În mod normal, este împotriva termenilor site-ului să răzuiți informații.
- Când răzuirea se face prin seleniu, atunci oferă suport pentru mai multe browsere.
- Cu alte cuvinte, racleta poate îndeplini sarcini similare de răzuire Firefox, Internet Explorer de asemenea.