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.

Enne andmete kraapimist valmistage ette Exceli makro

Step 2) Valige Arendaja lindi all suvand Visual Basic.

Enne andmete kraapimist valmistage ette Exceli makro

Step 3) Sisestage uus moodul.

Enne andmete kraapimist valmistage ette Exceli makro

Step 4) Initsialiseerige uus alamprogramm ja nimetage see test2-ks.

Sub test2()
End sub

Mooduli tulemused oleksid järgmised: -

Enne andmete kraapimist valmistage ette Exceli makro

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.

Enne andmete kraapimist valmistage ette Exceli makro

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: -

avatud Google Chrome VBA kasutamine

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: -

Avage veebisait sisse Google Chrome VBA kasutamine

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

Avage veebisait sisse Google Chrome VBA kasutamine

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: -

Võtke veebisaidilt teavet VBA abil

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.

Võtke veebisaidilt teavet VBA abil

Step 4) Allpool mainitud väljundi saamiseks vajutage värskendamisnuppu

Võtke veebisaidilt teavet VBA abil

Step 5) Võrrelge Exceli tulemusi google chrome'i tulemustega

Võtke veebisaidilt teavet VBA abil

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.

Võta see postitus kokku järgmiselt: