Selenium Vodič za VBA Excel: Primjer skrapanja weba u Chromeu
Što je Data Scraping pomoću selena?
Selenium može se klasificirati kao alat za automatizaciju koji olakšava struganje informacija s HTML web stranica kako bi se izvršilo struganje weba pomoću Google Chromea.
Kako pripremiti Macro programa Excel prije izvođenja struganja podataka pomoću Selenium?
Postoje određeni preduvjeti koji se moraju izvršiti na Excel makro datoteci prije nego što se uđe u proces struganja podataka u Excelu.
Ovi preduvjeti su sljedeći: –
Korak 1) Otvorite makronaredbu temeljenu na Excelu i pristupite opciji programera u excelu.
Korak 2) Odaberite opciju Visual Basic na vrpci za razvojne programere.
Korak 3) Umetnite novi modul.
Korak 4) Inicijalizirajte novi potprogram i nazovite ga test2.
Sub test2() End sub
Sljedeći bi bili rezultati u modulu: –
Korak 5) Pristupite opciji reference pod karticom alata i referencom Selenium biblioteka tipa. Sljedeće biblioteke treba referencirati na modul jer pomaže u otvaranju Google Chromea i olakšava razvoj makro skriptiranja.
Sada je Excel datoteka spremna za interakciju s Internet Explorerom. Sljedeći koraci bili bi uključivanje makro skripte koja bi olakšala struganje podataka u HTML-u.
Kako otvoriti Google Chrome koristeći VBA?
Evo, korak je za otvaranje Google Chrome koristeći VBA
Korak 1) Deklarirajte i inicijalizirajte varijable u potprogramu kao što je prikazano u nastavku
Sub test2() Dim driver as new webdriver Dim rowc, cc, columnC as integer
Korak 2) Da biste otvorili google chrome koristeći selenium i VBA, napišite driver.start “chrome” i pritisnite F5.
Sljedeći bi bio kod.
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
Modul bi rezultirao kako slijedi: –
Kako otvoriti web stranicu u Google Chromeu koristeći VBA?
Nakon što možete pristupiti google chromeu pomoću VBA, sljedeći korak bio bi uključivanje pristupa web stranici pomoću VBA. Ovo je olakšano get funkcijom u kojoj URL mora proći kao dvostruki navodnici u atributu.
Slijedite sljedeće korake kako je prikazano
Modul bi izgledao ovako: –
Pritisnite F5 da biste izvršili makro.
Sljedeća web-stranica otvorit će se u pregledniku Google Chrome kao što je prikazano
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
Sada je Excel makronaredba spremna za izvođenje zadataka struganja. Sljedeći korak bi pokazao kako se informacije mogu ekstrahirati primjenom selena i VBA.
Kako izgrebati informacije s web stranice pomoću VBA?
Pretpostavimo da dnevni trgovac želi pristupiti podacima s web stranice na dnevnoj bazi. Svaki put kad dnevni trgovac pritisne tipku, trebao bi automatski povući tržišne podatke u excel.
S gornje web stranice bilo bi potrebno pregledati element i promatrati kako su podaci strukturirani. Pristupite donjem izvornom kodu HTML-a pritiskom na 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>
Izvorni kod bi bio sljedeći: –
Kao što se može vidjeti da su podaci strukturirani kao jedna HTML tablica. Stoga, kako bi se izvukli cijeli podaci iz HTML tablice, bilo bi potrebno dizajnirati makronaredbu koja povlači informacije zaglavlja HTML tablice i odgovarajuće podatke povezane s tablicom. Obavite sljedeće zadatke kao što je prikazano: –
Korak 1) Formulirajte for petlju koja prolazi kroz informacije HTML zaglavlja kao zbirku. Upravljački program selena mora pronaći informacije zaglavlja HTML tablice. Da bismo to učinili, koristimo se metodom FindElementByClass() i FindElementByTag() za izvođenje zadatka kako je prikazano
VBA modul bi izgledao ovako: –
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
Korak 2) Zatim bi upravljački program za selen locirao podatke tablice koristeći sličan pristup, kao što je gore spomenuto. Morate napisati sljedeći kod: –
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
VBA modul bi izgledao ovako: –
Excel se može inicijalizirati pomoću atributa Raspon na Excel tablici ili putem atributa ćelija na Excel tablici. Kako bi se smanjila složenost VBA skripte, podaci o zbirci se inicijaliziraju na atribut ćelija excela na listu 2 koji se nalazi u radnoj knjizi. Nadalje, atribut teksta pomaže u postavljanju tekstualnih informacija ispod HTML oznake.
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
VBA modul bi izgledao ovako: –
Korak 3) Nakon što je makro skripta spremna, prođite i dodijelite potprogram gumbu excel i izađite iz modula VBA. Označite gumb kao osvježi ili bilo kojim prikladnim nazivom koji bi mu se mogao inicijalizirati. Za ovaj primjer, gumb je inicijaliziran kao osvježavanje.
Korak 4) Pritisnite gumb za osvježavanje kako biste dobili dolje navedeni izlaz
Korak 5) Usporedite rezultate u excelu s rezultatima google chrome
Rezime
- Selenium može se klasificirati kao alat za automatizaciju koji olakšava struganje informacija s HTML web stranica kako bi se izvršilo struganje weba pomoću Google Chromea.
- Struganje na internetu treba pažljivo izvesti.
- Izdvajanje informacija obično je protivno uvjetima web stranice.
- Kada se struganje vrši putem selena, nudi podršku za više preglednika.
- Drugim riječima, strugač može obavljati slične zadatke struganja Firefox, također i internet explorer.