Selenium VBA Excel oktatóanyag: Példa a Chrome webkaparására
Mi az a szelént használó adatlekopás?
Selenium az automatizálási eszköz közé sorolható, amely megkönnyíti a HTML-weboldalakról információk lekaparását a google chrome használatával végzett webkaparáshoz.
Hogyan készítsünk Excel makrót az adatlekopás végrehajtása előtt Selenium?
Vannak bizonyos előfeltételek, amelyeket végre kell hajtani az excel makrófájlon, mielőtt belevágnánk az adatok lekaparásának folyamatába az Excelben.
Ezek az előfeltételek a következők: -
Step 1) Nyisson meg egy Excel-alapú makrót, és nyissa meg az Excel fejlesztői opcióját.
Step 2) Válassza a Visual Basic lehetőséget a Fejlesztői szalag alatt.
Step 3) Helyezzen be egy új modult.
Step 4) Inicializáljon egy új szubrutint, és nevezze el test2-nek.
Sub test2() End sub
A következő eredmények lennének a modulban: -
Step 5) Nyissa meg a referencia opciót az Eszköz és hivatkozás alatt Selenium típusú könyvtár. A következő könyvtárakra hivatkozni kell a modulhoz, mivel ez segít a google chrome megnyitásában és megkönnyíti a makró szkriptek fejlesztését.
Most az Excel fájl készen áll az Internet Explorerrel való interakcióra. A következő lépés egy makrószkript beépítése lenne, amely megkönnyítené az adatok HTML-ben történő kaparását.
Hogyan nyissuk meg Google Chrome VBA használatával?
Itt vannak a megnyitás lépései Google Chrome VBA használatával
Step 1) Deklarálja és inicializálja a szubrutin változóit az alábbiak szerint
Sub test2() Dim driver as new webdriver Dim rowc, cc, columnC as integer
Step 2) A google chrome szelén és VBA használatával történő megnyitásához írja be a driver.start „chrome” parancsot, és nyomja meg a gombot F5.
A következő lenne a kód.
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
A modul eredménye a következő:
Hogyan lehet megnyitni egy webhelyet a Google Chrome-ban VBA segítségével?
Miután hozzáférhet a google Chrome-hoz VBA használatával, a következő lépés az lenne, hogy beépítse egy webhely elérését VBA használatával. Ezt megkönnyíti a get függvény, ahol az URL-nek dupla idézőjelként kell szerepelnie az attribútumban.
Kövesse a következő lépéseket a kijelzett módon
A modul a következőképpen nézne ki: -
Nyomja meg az F5 billentyűt a makró végrehajtásához.
A következő weboldal megnyílik a google chrome-ban a megjelenített módon
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
Most az Excel makró készen áll a kaparási feladatok végrehajtására. A következő lépésben bemutatjuk, hogyan nyerhető ki az információ szelén és VBA alkalmazásával.
Hogyan lehet információkat kaparni a webhelyről VBA segítségével?
Tegyük fel, hogy a napi kereskedő naponta szeretne hozzáférni az adatokhoz a webhelyről. Minden alkalommal, amikor a napi kereskedő megnyomja a gombot, automatikusan be kell húznia a piaci adatokat az Excelbe.
A fenti weboldalról meg kellene nézni egy elemet, és megfigyelni az adatok szerkezetét. A Ctrl + megnyomásával érheti el a HTML alábbi forráskódját 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>
A forráskód a következő lenne: -
Látható, hogy az adatok egyetlen HTML-táblázatként vannak felépítve. Ezért a teljes adat HTML-táblából való lekéréséhez olyan makró tervezésére van szükség, amely lekéri a HTML-tábla fejléce-információit és a táblához társított megfelelő adatokat. Hajtsa végre a következő feladatokat a képen látható módon: –
Step 1) Fogalmazzon meg egy for ciklust, amely gyűjteményként fut végig a HTML-fejléc információin. A szelén-illesztőprogramnak meg kell találnia a HTML-tábla fejléce-információit. Ehhez a FindElementByClass() és FindElementByTag() metódust használjuk a feladat végrehajtásához a megjelenített módon.
A VBA modul a következőképpen nézne ki: –
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
Step 2) Ezután a szelén-illesztőprogram a fent említett hasonló megközelítéssel megkeresi a táblázat adatait. A következő kódot kell beírni: -
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
A vba modul a következőképpen nézne ki: -
Az excel inicializálható az Excel lap Range attribútuma vagy az Excel lap cellákon keresztüli attribútuma segítségével. A VBA-szkript bonyolultságának csökkentése érdekében a gyűjteményadatokat a munkafüzetben található 2. lap Excel celláira inicializálja. Továbbá a text attribútum segít abban, hogy a szöveges információ HTML címke alá kerüljön.
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
A vba modul a következőképpen nézne ki: -
Step 3) Ha a makró szkript készen áll, adja át és rendelje hozzá az alprogramot az excel gombhoz, és lépjen ki a VBA modulból. Adja meg a gombot frissítésként vagy bármilyen megfelelő néven, amely inicializálható. Ebben a példában a gomb frissítésként van inicializálva.
Step 4) Nyomja meg a frissítés gombot az alábbi kimenet eléréséhez
Step 5) Hasonlítsa össze az Excelben elért eredményeket a google chrome eredményeivel
Összegzésként
- Selenium az automatizálási eszköz közé sorolható, amely megkönnyíti a HTML-weboldalakról információk lekaparását a google chrome használatával végzett webkaparáshoz.
- Az interneten történő kaparást óvatosan kell elvégezni.
- Általában ellentétes a webhely feltételeivel az információk kikaparása.
- Ha a kaparás szelénen keresztül történik, akkor több böngésző támogatást kínál.
- Más szavakkal, a kaparó hasonló átkaparási feladatokat tud végrehajtani Firefox, Internet Explorer is.