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.
Steg 2) Välj Visual Basic-alternativet under Utvecklarband.
Steg 3) Sätt in en ny modul.
Steg 4) Initiera en ny subrutin och namnge den som test2.
Sub test2() End sub
Följande blir resultatet i modulen: -
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.
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: -
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: -
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
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: –
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.
Steg 4) Tryck på uppdateringsknappen för att få utgången nedan
Steg 5) Jämför resultaten i excel med resultaten från google chrome
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å.