Selenium VBA Excel-veiledning: Chrome Web Scraping Eksempel

Hva er dataskraping ved bruk av selen?

Selenium kan klassifiseres som automatiseringsverktøyet som forenkler skraping av informasjon fra HTML-nettsidene for å utføre nettskraping ved å bruke google chrome.

Hvordan forberede Excel-makro før du utfører dataskraping ved hjelp av Selenium?

Det er visse forutsetninger som må utføres på excel-makrofilen før du går inn i prosessen med dataskraping i excel.

Disse forutsetningene er som følger: -

Trinn 1) Åpne en Excel-basert makro og få tilgang til utvikleralternativet Excel.

Forbered Excel-makro før du utfører dataskraping

Trinn 2) Velg Visual Basic-alternativet under utviklerbånd.

Forbered Excel-makro før du utfører dataskraping

Trinn 3) Sett inn en ny modul.

Forbered Excel-makro før du utfører dataskraping

Trinn 4) Initialiser en ny subrutine og navngi den som test2.

Sub test2()
End sub

Følgende vil være resultatene i modulen: -

Forbered Excel-makro før du utfører dataskraping

Trinn 5) Få tilgang til referansealternativet under verktøyfanen og referanse Selenium type bibliotek. Følgende biblioteker skal refereres til modulen da den hjelper til med å åpne google chrome og letter utviklingen av makroskripting.

Forbered Excel-makro før du utfører dataskraping

Nå er Excel-filen klar til å samhandle med Internet Explorer. Neste trinn ville være å inkorporere et makroskript som vil lette dataskraping i HTML.

Hvordan åpne Google Chrome bruker VBA?

Her er trinn for å åpne Google Chrome bruker VBA

Trinn 1) Deklarer og initialiser variablene i subrutinen som vist nedenfor

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

Trinn 2) For å åpne google chrome med selen og VBA, skriv driver.start "chrome" og trykk F5.

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

Modulen vil resultere som følger: -

Open Google Chrome Bruker VBA

Hvordan åpne nettstedet i Google chrome ved hjelp av VBA?

Når du får tilgang til google chrome ved hjelp av VBA, vil neste trinn være å innlemme tilgangen til et nettsted ved hjelp av VBA. Dette tilrettelagt av get-funksjonen der URL-en må passere som doble anførselstegn i attributtet.

Følg følgende trinn som vist

Modulen vil se slik ut: -

Åpne nettstedet i Google Chrome Bruker VBA

Trykk F5 for å utføre makroen.

Følgende nettside vil bli åpnet i google chrome som vist

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

Åpne nettstedet i Google Chrome Bruker VBA

Nå er excel-makroen klar med hensyn til å utføre skrapeoppgavene. Det neste trinnet viser hvordan informasjonen kan trekkes ut ved å bruke selen og VBA.

Hvordan skrape informasjon fra nettstedet ved å bruke VBA?

Anta at daytraderen ønsker å få tilgang til dataene fra nettstedet på daglig basis. Hver gang dagshandleren trykker på knappen, skal den automatisk trekke markedsdataene inn i Excel.

Fra nettstedet ovenfor vil det være nødvendig å inspisere et element og observere hvordan dataene er strukturert. Få tilgang til HTML-kildekoden nedenfor ved å trykke på kontroll + 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 vil være som følger: -

Som det kan sees at dataene er strukturert som en enkelt HTML-tabell. Derfor, for å trekke hele data fra HTML-tabellen, vil det kreve utforming av makro som trekker overskriftsinformasjonen til HTML-tabellen og de tilsvarende dataene knyttet til tabellen. Utfør følgende oppgaver som vist: –

Trinn 1) Formuler en for-løkke som går gjennom HTML-hodeinformasjonen som en samling. Selendriveren må finne overskriftsinformasjonen til HTML-tabellen. For å gjøre dette bruker vi metodene FindElementByClass() og FindElementByTag() for å utføre oppgaven som vist

VBA-modulen vil se slik ut: -

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

Trinn 2) Deretter vil selendriveren finne tabelldataene ved å bruke den lignende tilnærmingen, som nevnt ovenfor. Du må 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"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-modulen vil se slik ut: -

Excel kan initialiseres ved hjelp av Range-attributtet til excel-arket eller gjennom cells-attributtet til excel-arket. For å redusere kompleksiteten til VBA-skriptet initialiseres innsamlingsdataene til excel-celleattributtet til ark 2 som finnes i arbeidsboken. Videre hjelper tekstattributtet med å få tekstinformasjonen plassert under HTML-taggen.

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-modulen vil se slik ut: -

Skrap informasjon fra nettstedet ved hjelp av VBA

Trinn 3) Når makroskriptet er klart, send og tilordne subrutinen til excel-knappen og gå ut av modulen til VBA. Merk knappen som oppdatering eller et hvilket som helst passende navn som kan initialiseres til den. For dette eksemplet initialiseres knappen som oppdatering.

Skrap informasjon fra nettstedet ved hjelp av VBA

Trinn 4) Trykk på oppdateringsknappen for å få utdataene nedenfor

Skrap informasjon fra nettstedet ved hjelp av VBA

Trinn 5) Sammenlign resultatene i excel med resultatene fra google chrome

Skrap informasjon fra nettstedet ved hjelp av VBA

Sammendrag

  • Selenium kan klassifiseres som automatiseringsverktøyet som forenkler skraping av informasjon fra HTML-nettsidene for å utføre nettskraping ved å bruke google chrome.
  • Skrapingen på internett bør utføres nøye.
  • Det er normalt i strid med vilkårene på nettstedet å skrape ut informasjon.
  • Når skraping gjøres gjennom selen, tilbyr den støtte for flere nettlesere.
  • Med andre ord kan skraperen utføre lignende oppgaver med å skrape gjennom Firefox, Internet Explorer også.