Selenium VBA Excel-vejledning: Eksempel på Chrome Web Scraping

Hvad bruger dataskrabning selenium?

Selenium kan klassificeres som automatiseringsværktøjet, der letter skrabning af information fra HTML-websiderne for at udføre web-skrabning ved hjælp af google chrome.

Sådan forbereder du Excel-makro før du udfører dataskrabning ved hjælp af Selenium?

Der er visse forudsætninger, der skal udføres på excel-makrofilen, før du går ind i processen med dataskrabning i excel.

Disse forudsætninger er som følger: -

Trin 1) Åbn en Excel-baseret makro og få adgang til udviklermuligheden Excel.

Forbered Excel-makro, før du udfører dataskrabning

Trin 2) Vælg Visual Basic-indstillingen under Udviklerbånd.

Forbered Excel-makro, før du udfører dataskrabning

Trin 3) Indsæt et nyt modul.

Forbered Excel-makro, før du udfører dataskrabning

Trin 4) Initialiser en ny underrutine og navngiv den som test2.

Sub test2()
End sub

Following ville være resultaterne i modulet: –

Forbered Excel-makro, før du udfører dataskrabning

Trin 5) Få adgang til referencemuligheden under værktøjsfanen og reference Selenium type bibliotek. Folloenwing biblioteker skal refereres til modulet, da det hjælper med at åbne google chrome og letter udviklingen af ​​makroscripting.

Forbered Excel-makro, før du udfører dataskrabning

Nu er Excel-filen klar til at interagere med Internet Explorer. Næste trin ville være at inkorporere et makroscript, der ville lette dataskrabning i HTML.

Sådan åbnes Google Chrome bruger VBA?

Her er trin til at åbne Google Chrome ved hjælp af VBA

Trin 1) Erklær og initialiser variablerne i subrutinen som displayed jf. nedenstående

Sub test2()
Dim driver as new webdriver
Dim rowc, cc, columnC as integer

Trin 2) At åbne google chrome ved brug af selenium og VBA, skriv driver.start “chrome” og tryk F5.

Folloenwing ville være koden.

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

Modulet vil resultere som følger: -

Åbne Google Chrome Bruger VBA

Sådan åbner du hjemmesiden Google chrome bruger VBA?

Når du er i stand til at få adgang til google chrome ved at bruge VBA ville det næste trin være at inkorporere adgangen til et websted ved hjælp af VBA. Dette lettes af get-funktionen, hvori URL'en skal passere som double citater i attributten.

Følg folloenwing trin som displyed

Modulet ser således ud: -

Åbn hjemmesiden i Google Chrome Bruger VBA

Tryk på F5 for at udføre makroen.

Folloenwing webside ville blive åbnet i google chrome som displayed

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

Åbn hjemmesiden i Google Chrome Bruger VBA

Nu er excel-makroen klar med hensyn til at udføre skrabeopgaverne. Det næste trin viser, hvordan oplysningerne kan udtrækkes ved at anvende selenium og VBA.

Hvordan skraber man information fra webstedet ved hjælp af VBA?

Antag, at daytraderen ønsker at få adgang til data fra hjemmesiden på daglig basis. Hver gang dagshandleren trykker på knappen, skal den automatisk trække markedsdataene ind i Excel.

Fra ovenstående hjemmeside vil det være nødvendigt at inspicere et element og observere, hvordan data er struktureret. Få adgang til nedenstående HTML-kildekode ved at trykke på kontrol + 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>

Kildekoden ville være som følger: -

Da det kan ses, at data er struktureret som en enkelt HTML-tabel. Derfor, for at trække hele data fra HTML-tabellen, ville det kræve design af makro, som trækker header-informationen fra HTML-tabellen og de tilsvarende data, der er knyttet til tabellen. Udfør folloenwing opgaver som displyed-

Trin 1) Formuler en for-løkke, der løber gennem HTML-headeroplysningerne som en samling. Det selenium driveren skal finde headeroplysningerne for HTML-tabellen. For at gøre dette bruger vi metoden FindElementByClass() og FindElementByTag() til at udføre opgaven som displayed

VBA-modulet ville se ud som følger: -

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

Trin 2) Dernæst selenium driveren vil finde tabeldataene ved hjælp af den lignende tilgang, som nævnt ovenfor. Du skal skrive folloenwing kode: -

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

VBA-modulet ville se ud som følger: -

Excel kan initialiseres ved hjælp af Range-attributten på excel-arket eller gennem celle-attributten i excel-arket. For at reducere complexi VBA-scriptet initialiseres indsamlingsdataene til excel-celle-attributten for ark 2, der findes i projektmappen. Yderligere hjælper tekstattributten med at få tekstinformationen placeret under HTML-tag.

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

VBA-modulet ville se ud som følger: -

Skrab information fra websted ved hjælp af VBA

Trin 3) Når makroscriptet er klar, skal du videregive og tildele subrutinen til excel-knappen og afslutte modulet i VBA. Mærk knappen som opdatering eller et hvilket som helst passende navn, der kunne initialiseres til den. I dette eksempel initialiseres knappen som opdatering.

Skrab information fra websted ved hjælp af VBA

Trin 4) Tryk på opdateringsknappen for at få nedenstående output

Skrab information fra websted ved hjælp af VBA

Trin 5) Sammenlign resultaterne i excel med resultaterne af google chrome

Skrab information fra websted ved hjælp af VBA

Resumé

  • Selenium kan klassificeres som automatiseringsværktøjet, der letter skrabning af information fra HTML-websiderne for at udføre web-skrabning ved hjælp af google chrome.
  • Skrabningen på internettet skal udføres omhyggeligt.
  • Det er normalt imod hjemmesidens vilkår at skrabe oplysninger ud.
  • Når afskrabningen er færdig selenium, så tilbyder den understøttelse af flere browsere.
  • Med andre ord, den scraper kan udføre lignende opgaver med at skrabe igennem Firefox, også Internet Explorer.