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.
Trinn 2) Velg Visual Basic-alternativet under utviklerbånd.
Trinn 3) Sett inn en ny modul.
Trinn 4) Initialiser en ny subrutine og navngi den som test2.
Sub test2() End sub
Følgende vil være resultatene i modulen: -
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.
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: -
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: -
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
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: -
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.
Trinn 4) Trykk på oppdateringsknappen for å få utdataene nedenfor
Trinn 5) Sammenlign resultatene i excel med resultatene fra google chrome
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å.