Selenium VBA Exceli õpetus: Chrome'i veebikraapimise näide
Mis on seleeni abil andmete kraapimine?
Selenium võib klassifitseerida automatiseerimistööriistaks, mis hõlbustab HTML-i veebilehtedelt teabe kraapimist, et teha google Chrome'i abil veebikraapimist.
Exceli makro ettevalmistamine enne andmete kraapimist Selenium?
Enne Excelis andmete kraapimist tuleb Exceli makrofailis täita teatud eeltingimused.
Need eeltingimused on järgmised: -
Step 1) Avage Exceli-põhine makro ja pääsete juurde Exceli arendajavalikule.
Step 2) Valige Arendaja lindi all suvand Visual Basic.
Step 3) Sisestage uus moodul.
Step 4) Initsialiseerige uus alamprogramm ja nimetage see test2-ks.
Sub test2() End sub
Mooduli tulemused oleksid järgmised: -
Step 5) Juurdepääs viitevalikule tööriista vahekaardi ja viite all Selenium tüüpi raamatukogu. Moodulile tuleb viidata järgmistele teekidele, kuna see aitab avada google chrome'i ja hõlbustab makroskriptimise arendamist.
Nüüd on Exceli fail Internet Exploreriga suhtlemiseks valmis. Järgmised sammud oleks makroskripti lisamine, mis hõlbustaks andmete kraapimist HTML-is.
Kuidas avada Google Chrome kasutad VBA-d?
Siin on samm avamiseks Google Chrome kasutades VBA-d
Step 1) Deklareerige ja lähtestage alamprogrammi muutujad, nagu allpool näidatud
Sub test2() Dim driver as new webdriver Dim rowc, cc, columnC as integer
Step 2) Google chrome'i avamiseks seleeni ja VBA abil kirjuta driver.start “chrome” ja vajuta F5.
Kood oleks järgmine.
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
Mooduli tulemus oleks järgmine: -
Kuidas VBA abil veebisaiti Google Chrome'is avada?
Kui teil on VBA abil juurdepääs google Chrome'ile, oleks järgmine samm lisada veebisaidile juurdepääs VBA abil. Seda hõlbustab funktsioon get, mille puhul URL peab atribuudis olema jutumärkidena.
Järgige järgmisi samme, nagu kuvatakse
Moodul näeks välja järgmine: -
Makro käivitamiseks vajutage klahvi F5.
Järgmine veebileht avatakse kuvatud kujul Google Chrome'is
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
Nüüd on Exceli makro kraapimisülesannete täitmiseks valmis. Järgmine samm näitaks, kuidas seleeni ja VBA abil teavet saab eraldada.
Kuidas VBA abil veebisaidilt teavet kraapida?
Oletame, et päevakaupleja soovib igapäevaselt veebisaidilt andmetele juurde pääseda. Iga kord, kui päevakaupleja vajutab nuppu, peaks ta turuandmed automaatselt Excelisse tõmbama.
Ülaltoodud veebisaidilt oleks vaja mõnda elementi kontrollida ja jälgida, kuidas andmed on struktureeritud. Juurdepääs allolevale HTML-i lähtekoodile, vajutades juhtklahvi + 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>
Lähtekood oleks järgmine: -
Nagu näha, on andmed struktureeritud ühtse HTML-tabelina. Seetõttu on HTML-tabelist kogu andmete tõmbamiseks vaja kujundada makro, mis tõmbab HTML-tabeli päise teabe ja vastavad tabeliga seotud andmed. Tehke järgmised toimingud, nagu kuvatakse: –
Step 1) Sõnastage for-silmus, mis jookseb koguna läbi HTML-i päise teabe. Seleenidraiver peab leidma HTML-tabeli päise teabe. Selleks kasutame ülesande täitmiseks kuvatud viisil meetodeid FindElementByClass() ja FindElementByTag()
VBA moodul näeks välja järgmine: -
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
Step 2) Järgmisena tuvastab seleenidraiver tabeli andmed sarnase lähenemisviisi abil, nagu eespool mainitud. Peate kirjutama järgmise koodi: -
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 moodul näeks välja järgmine: -
Exceli saab lähtestada Exceli lehe atribuudi Range või Exceli lehe atribuudi lahtrite abil. VBA-skripti keerukuse vähendamiseks lähtestatakse kogumisandmed töövihikus oleva lehe 2 Exceli lahtrite atribuudiga. Lisaks aitab tekstiatribuut tekstiteavet HTML-sildi alla paigutada.
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 moodul näeks välja järgmine: -
Step 3) Kui makroskript on valmis, edastage ja määrake alamprogramm Exceli nupule ja väljuge VBA moodulist. Märgistage nupp värskenduseks või mis tahes sobivaks nimeks, mida saaks selle initsialiseerida. Selle näite puhul lähtestatakse nupp värskendusena.
Step 4) Allpool mainitud väljundi saamiseks vajutage värskendamisnuppu
Step 5) Võrrelge Exceli tulemusi google chrome'i tulemustega
kokkuvõte
- Selenium võib klassifitseerida automatiseerimistööriistaks, mis hõlbustab HTML-i veebilehtedelt teabe kraapimist, et teha google Chrome'i abil veebikraapimist.
- Internetis kraapimine peaks olema ettevaatlik.
- Tavaliselt on teabe väljakraapimine veebisaidi tingimustega vastuolus.
- Kui kraapimine toimub seleeni kaudu, pakub see mitme brauseri tuge.
- Teisisõnu võib kaabits täita sarnaseid läbikraapimise ülesandeid Firefox, Internet Explorer samuti.












