Använda Excel VBA och Selen

Vad är dataskrapning med selen?

Selen kan klassificeras som automatiseringsverktyget som underlättar skrapning av information från HTML-webbsidorna för att utföra webbskrapning med hjälp av Google Chrome.

I den här handledningen lär du dig:

  • Vad är dataskrapning med selen?
  • Hur förbereder jag Excel-makro innan du utför dataskrapning med Selen?
  • Hur öppnar jag Google Chrome med VBA?
  • Hur öppnar jag webbplats i Google Chrome med VBA?
  • Hur skrapar man information från webbplatsen med VBA?

Hur förbereder jag Excel-makro innan du utför dataskrapning med Selen?

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

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

Steg 1) Öppna en Excel-baserad makro och få tillgång till utvecklaralternativet för Excel.

Steg 2) Välj alternativet Visual Basic under utvecklarbandet.

Steg 3) Sätt i en ny modul.

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

Undertest2 ()Avsluta sub

Följande skulle bli resultaten i modulen: -

Steg 5) Öppna referensalternativet under verktygsfliken och referera Selenium-biblioteket. Följande bibliotek ska hänvisas till modulen eftersom det 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 är att införliva ett makroskript som underlättar dataskrapning i HTML.

Hur öppnar jag Google Chrome med VBA?

Här är steg för att öppna Google Chrome med VBA

Steg 1) Förklara och initialisera variablerna i underrutinen enligt nedan

Undertest2 ()Dim drivrutin som ny webbdrivareDim radc, cc, kolumnC som heltal

Steg 2) För att öppna Google Chrome med selen och VBA, skriv driver. Starta "Chrome" och tryck på F5 .

Följande skulle vara koden.

Undertest2 ()Dim drivrutin som ny webbdrivareDim radc, cc, kolumnC som heltalDriver.start "Chrome"Ansökan. Vänta nu + tidsvärde ("00:00:20")Avsluta sub

Modulen skulle bli följande: -

Hur öppnar jag webbplats i Google Chrome med VBA?

När du har tillgång till 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: n måste passera som dubbla citat i attributet.

Följ följande steg som visas

Modulen ser ut som följer: -

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

Följande webbsida öppnas i Google Chrome som visas

Undertest2 ()Dim drivrutin som ny webbdrivareDim radc, cc, kolumnC som heltalDriver.start "Chrome"Driver.get "http://demo.guru99.com/test/web-table-element.php"Ansökan. Vänta nu + tidsvärde ("00:00:20")Avsluta sub

Nu är Excel-makrot redo med avseende på att skrapa uppgifterna. Nästa steg visar hur informationen kan extraheras genom att applicera selen och VBA.

Hur skrapar man information från webbplatsen med VBA?

Anta att dagshandlare vill komma åt data från webbplatsen dagligen. Varje gång den dagliga näringsidkaren trycker på klicka på knappen ska den automatiskt dra marknadsdata till Excel.

Från ovanstående webbplats skulle det vara nödvändigt att inspektera ett element och observera hur uppgifterna är strukturerade. Åtkomst till källkoden nedan för HTML genom att trycka på kontroll + Skift + I


 Företag  Grupp  Pre Close (Rs)  Nuvarande pris (Rs) % förändring 

Källkoden skulle vara som följer: -

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

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

VBA-modulen ser ut som följer: -

Undertest2 ()Dim drivrutin som ny WebDriverDim radc, cc, kolumnC som heltalradc = 2Application.ScreenUpdating = Falsktförare.Start "krom"driver.Get "http://demo.guru99.com/test/web-table-element.php"För varje th i driver.FindElementByClass ("dataTable"). FindElementByTag ("thead"). FindElementsByTag ("tr")cc = 1För varje t i th.FindElementsByTag ("th")Ark2.Celler (1, cc) .Värde = t.Textcc = cc + 1Nästa tNästa th

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

Undertest2 ()Dim drivrutin som ny WebDriverDim radc, cc, kolumnC som heltalradc = 2Application.ScreenUpdating = Falsktförare.Start "krom"driver.Get "http://demo.guru99.com/test/web-table-element.php"För varje th i driver.FindElementByClass ("dataTable"). FindElementByTag ("thead"). FindElementsByTag ("tr")cc = 1För varje t i th.FindElementsByTag ("th")Ark2.Celler (1, cc) .Värde = t.Textcc = cc + 1Nästa tNästa thFör varje tr-i-drivrutin.FindElementByClass ("dataTable"). FindElementByTag ("tbody"). FindElementsByTag ("tr")kolumn C = 1För varje td i tr.FindElementsByTag ("td")Sheet2.Cells (rowc, columnC) .Value = td.Textkolumn C = kolumn C + 1Nästa tdrowc = rowc + 1Nästa trApplication.Wait Now + TimeValue ("00:00:20")Avsluta sub

VBA-modulen ser ut som följer: -

Excel kan initieras med hjälp av Range-attributet för excel-arket eller genom celler-attributet för excel-arket. För att minska komplexiteten i VBA-skriptet initialiseras samlingsdata till attributet excelceller för ark 2 som finns i arbetsboken. Vidare hjälper textattributet att få textinformationen placerad under HTML-taggen.

Undertest2 ()Dim drivrutin som ny WebDriverDim radc, cc, kolumnC som heltalradc = 2Application.ScreenUpdating = Falsktförare.Start "krom"driver.Get "http://demo.guru99.com/test/web-table-element.php"För varje th i driver.FindElementByClass ("dataTable"). FindElementByTag ("thead"). FindElementsByTag ("tr")cc = 1För varje t i th.FindElementsByTag ("th")Ark2.Celler (1, cc) .Värde = t.Textcc = cc + 1Nästa tNästa thFör varje tr-i-drivrutin.FindElementByClass ("dataTable"). FindElementByTag ("tbody"). FindElementsByTag ("tr")kolumn C = 1För varje td i tr.FindElementsByTag ("td")Sheet2.Cells (rowc, columnC) .Value = td.Textkolumn C = kolumn C + 1Nästa tdrowc = rowc + 1Nästa trApplication.Wait Now + TimeValue ("00:00:20")Avsluta sub

VBA-modulen ser ut som följer: -

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

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

Steg 5) Jämför resultaten i Excel med resultaten från Google Chrome

Sammanfattning:

  • Selen kan klassificeras som automatiseringsverktyget som underlättar skrapning av information från HTML-webbsidorna för att utföra webbskrapning med hjälp av Google Chrome.
  • Skrapningen på internet bör utföras noggrant.
  • Det strider normalt mot villkoren på webbplatsen att skrapa ut information.
  • När skrapning görs genom selen erbjuder det flera webbläsarstöd.
  • Med andra ord kan skrapan utföra liknande skrapuppgifter genom Firefox, Internet Explorer också.

Intressanta artiklar...