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

Hvad er dataskrabning ved hjælp af selen?

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

Følgende vil 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. Følgende 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) Deklarer og initialiser variablerne i subrutinen som vist nedenfor

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

Trin 2) For at åbne google chrome ved hjælp af selen og VBA, skriv driver.start "chrome" og tryk F5.

Følgende 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

Hvordan åbner man hjemmeside i Google chrome ved hjælp af VBA?

Når du er i stand til at få adgang til Google Chrome ved hjælp af VBA, ville det næste trin være at indarbejde adgangen til et websted ved hjælp af VBA. Dette lettes af get-funktionen, hvor URL'en skal passere som dobbelte anførselstegn i attributten.

Følg de følgende trin som vist

Modulet ser således ud: -

Åbn hjemmesiden i Google Chrome Bruger VBA

Tryk på F5 for at udføre makroen.

Følgende webside åbnes i google chrome som vist

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 informationen kan udvindes ved at anvende selen 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 følgende opgaver som vist: –

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

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 ville selendriveren lokalisere tabeldataene ved hjælp af den lignende tilgang, som nævnt ovenfor. Du skal skrive følgende 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 kompleksiteten af ​​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 skrabning udføres gennem selen, så tilbyder det flere browserunderstøttelse.
  • Med andre ord kan skraberen udføre lignende opgaver med at skrabe igennem Firefox, også Internet Explorer.