Selenium VBA Excel Handledning: Chrome Web Scraping Exempel

Vad är dataskrapning med selen?

Selenium kan klassificeras som automatiseringsverktyget som underlättar skrapning av information från HTML-webbsidorna för att utföra webbskrapning med google chrome.

Hur man förbereder Excel-makro innan du utför dataskrapning med hjälp av Selenium?

Det finns vissa förutsättningar som måste utföras på Excel-makrofilen innan du går in i processen med dataskrapning i Excel.

Dessa förutsättningar är följande: -

Steg 1) Öppna ett Excel-baserat makro och få tillgång till utvecklaralternativet excel.

Förbered Excel-makro innan du utför dataskrapning

Steg 2) Välj Visual Basic-alternativet under Utvecklarband.

Förbered Excel-makro innan du utför dataskrapning

Steg 3) Sätt in en ny modul.

Förbered Excel-makro innan du utför dataskrapning

Steg 4) Initiera en ny subrutin och namnge den som test2.

Sub test2()
End sub

Följande blir resultatet i modulen: -

Förbered Excel-makro innan du utför dataskrapning

Steg 5) Gå till referensalternativet under verktygsfliken och referens Selenium typ bibliotek. Följande bibliotek ska refereras till modulen eftersom den hjälper till att öppna google chrome och underlättar utvecklingen av makroskript.

Förbered Excel-makro innan du utför dataskrapning

Nu är Excel-filen redo att interagera med Internet Explorer. Nästa steg skulle vara att införliva ett makroskript som skulle underlätta dataskrapning i HTML.

Hur man öppnar Google Chrome använder du VBA?

Här är steg för att öppna Google Chrome använder VBA

Steg 1) Deklarera och initiera variablerna i subrutinen som visas nedan

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

Steg 2) För att öppna google chrome med selen och VBA, skriv driver.start "chrome" och tryck F5.

Följande skulle vara 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 skulle resultera enligt följande: -

Öppen Google Chrome Använder VBA

Hur öppnar man webbplats i Google chrome med VBA?

När du väl kan komma åt Google Chrome med VBA, skulle nästa steg vara att införliva åtkomst till en webbplats med VBA. Detta underlättas av get-funktionen där URL:en måste passera som dubbla citattecken i attributet.

Följ följande steg som visas

Modulen skulle se ut som följer: -

Öppna webbplatsen in Google Chrome Använder VBA

Tryck på F5 för att köra makrot.

Följande webbsida kommer att öppnas i google chrome som visas

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

Öppna webbplatsen in Google Chrome Använder VBA

Nu är excelmakrot klart för att utföra skrapningsuppgifterna. Nästa steg skulle visa hur informationen kan extraheras genom att applicera selen och VBA.

Hur skrapar man information från webbplatsen med VBA?

Anta att daytradern vill komma åt data från webbplatsen dagligen. Varje gång dagshandlaren trycker på knappen, bör den automatiskt dra marknadsdata till Excel.

Från ovanstående webbplats skulle det vara nödvändigt att inspektera ett element och observera hur data är uppbyggd. Gå till nedanstående källkod för HTML genom att trycka 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>

Källkoden skulle vara följande: -

Som det kan ses att data är strukturerad som en enda HTML-tabell. Därför, för att hämta hela data från HTML-tabellen, skulle det krävas design av ett makro som hämtar rubrikinformationen för HTML-tabellen och motsvarande data som är associerade med tabellen. Utför följande uppgifter som visas: –

Steg 1) Formulera en for-loop som går igenom HTML-huvudinformationen som en samling. Selendrivrutinen måste hitta rubrikinformationen för HTML-tabellen. För att göra detta använder vi metoderna FindElementByClass() och FindElementByTag() för att utföra uppgiften som visas

VBA-modulen skulle se ut som följer: –

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

Steg 2) Därefter skulle selendrivrutinen lokalisera tabelldata med liknande tillvägagångssätt, som nämnts ovan. Du måste skriva följande kod: –

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-modulen skulle se ut som följer: –

Excel kan initieras med hjälp av Range-attributet i excel-arket eller genom cell-attributet i excel-arket. För att minska komplexiteten hos VBA-skriptet initieras insamlingsdata till excel-cellsattributet för ark 2 som finns i arbetsboken. Vidare hjälper textattributet till att få textinformationen placerad 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"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-modulen skulle se ut som följer: –

Skrapa information från webbplatsen med hjälp av VBA

Steg 3) När makroskriptet är klart, skicka och tilldela subrutinen till excel-knappen och avsluta modulen i VBA. Märk knappen som uppdatering eller något lämpligt namn som kan initieras till den. I det här exemplet initieras knappen som uppdatering.

Skrapa information från webbplatsen med hjälp av VBA

Steg 4) Tryck på uppdateringsknappen för att få utgången nedan

Skrapa information från webbplatsen med hjälp av VBA

Steg 5) Jämför resultaten i excel med resultaten från google chrome

Skrapa information från webbplatsen med hjälp av VBA

Sammanfattning

  • Selenium kan klassificeras som automatiseringsverktyget som underlättar skrapning av information från HTML-webbsidorna för att utföra webbskrapning med google chrome.
  • Skrapningen på internet bör utföras noggrant.
  • Det strider normalt mot webbplatsens villkor att skrapa ut information.
  • När skrapning sker genom selen, erbjuder det stöd för flera webbläsare.
  • Med andra ord kan skrapan utföra liknande uppgifter att skrapa igenom Firefox, Internet Explorer också.