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.

Készítse elő az Excel makrót az adatok lekaparása előtt

Step 2) Válassza a Visual Basic lehetőséget a Fejlesztői szalag alatt.

Készítse elő az Excel makrót az adatok lekaparása előtt

Step 3) Helyezzen be egy új modult.

Készítse elő az Excel makrót az adatok lekaparása előtt

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: -

Készítse elő az Excel makrót az adatok lekaparása előtt

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.

Készítse elő az Excel makrót az adatok lekaparása előtt

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ő:

Nyisd ki Google Chrome VBA használata

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: -

Nyissa meg a webhelyet Google Chrome VBA használata

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

Nyissa meg a webhelyet Google Chrome VBA használata

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: -

Információk kimásolása a webhelyről VBA használatával

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.

Információk kimásolása a webhelyről VBA használatával

Step 4) Nyomja meg a frissítés gombot az alábbi kimenet eléréséhez

Információk kimásolása a webhelyről VBA használatával

Step 5) Hasonlítsa össze az Excelben elért eredményeket a google chrome eredményeivel

Információk kimásolása a webhelyről VBA használatával

Ö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.