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.
Trin 2) Vælg Visual Basic-indstillingen under Udviklerbånd.
Trin 3) Indsæt et nyt modul.
Trin 4) Initialiser en ny underrutine og navngiv den som test2.
Sub test2() End sub
Følgende vil være resultaterne i modulet: -
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.
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: -
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: -
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
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: -
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.
Trin 4) Tryk på opdateringsknappen for at få nedenstående output
Trin 5) Sammenlign resultaterne i excel med resultaterne af google chrome
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.