Selenium Tutorial VBA Excel: Exemplu de răzuire web Chrome

Ce este Data Scraping folosind seleniu?

Selenium poate fi clasificat ca instrument de automatizare care facilitează răzuirea informațiilor din paginile web HTML pentru a efectua scraping web folosind Google Chrome.

Cum să pregătiți Excel Macro înainte de a efectua Data Scraping folosind Selenium?

Există anumite cerințe preliminare care trebuie efectuate pe fișierul macro excel înainte de a intra în procesul de răzuire a datelor în Excel.

Aceste premise sunt următoarele: -

Pas 1) Deschideți o macrocomandă bazată pe Excel și accesați opțiunea de dezvoltator a Excel.

Pregătiți macrocomandă Excel înainte de a efectua răzuirea datelor

Pas 2) Selectați opțiunea Visual Basic din Panglică pentru dezvoltatori.

Pregătiți macrocomandă Excel înainte de a efectua răzuirea datelor

Pas 3) Introduceți un modul nou.

Pregătiți macrocomandă Excel înainte de a efectua răzuirea datelor

Pas 4) Inițializați o nouă subrutină și denumiți-o test2.

Sub test2()
End sub

Următoarele ar fi rezultatele din modul: –

Pregătiți macrocomandă Excel înainte de a efectua răzuirea datelor

Pas 5) Accesați opțiunea de referință din fila instrument și referință Selenium biblioteca de tipuri. Următoarele biblioteci trebuie să facă referire la modul, deoarece ajută la deschiderea Google Chrome și facilitează dezvoltarea scripturilor macro.

Pregătiți macrocomandă Excel înainte de a efectua răzuirea datelor

Acum fișierul Excel este gata să interacționeze cu Internet Explorer. Următorii pași ar fi încorporarea unui script macro care ar facilita scraping-ul de date în HTML.

Cum se deschide Google Chrome folosind VBA?

Iată pasul de deschis Google Chrome folosind VBA

Pas 1) Declarați și inițializați variabilele din subrutină așa cum este afișat mai jos

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

Pas 2) Pentru a deschide Google Chrome folosind seleniu și VBA, scrieți driver.start „chrome” și apăsați F5.

Următorul ar fi codul.

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

Modulul ar rezulta după cum urmează: -

Operatii Deschise Google Chrome Folosind VBA

Cum se deschide site-ul web în Google Chrome folosind VBA?

Odată ce puteți accesa Google Chrome folosind VBA, următorul pas ar fi să încorporați accesarea unui site web folosind VBA. Acest lucru este facilitat de funcția get în care URL-ul trebuie să treacă ca ghilimele duble în atribut.

Urmați următorii pași așa cum sunt afișați

Modulul ar arăta după cum urmează: -

Deschide site-ul în Google Chrome Folosind VBA

Apăsați F5 pentru a executa macro-ul.

Următoarea pagină web va fi deschisă în Google Chrome așa cum este afișat

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

Deschide site-ul în Google Chrome Folosind VBA

Acum macrocomanda excel este gata pentru a efectua sarcinile de răzuire. Următorul pas ar afișa modul în care informațiile pot fi extrase prin aplicarea seleniului și VBA.

Cum să răzuiți informații de pe site folosind VBA?

Să presupunem că comerciantul zilnic dorește să acceseze datele de pe site-ul web zilnic. De fiecare dată când comerciantul apasă pe butonul, acesta ar trebui să tragă automat datele pieței în Excel.

De pe site-ul de mai sus, ar fi necesar să se inspecteze un element și să se observe modul în care sunt structurate datele. Accesați codul sursă HTML de mai jos apăsând control + 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>

Codul sursă ar fi următorul: -

După cum se poate observa că datele sunt structurate ca un singur tabel HTML. Prin urmare, pentru a extrage date întregi din tabelul HTML, ar fi nevoie de proiectarea unei macrocomenzi care extrage informațiile de antet ale tabelului HTML și datele corespunzătoare asociate cu tabelul. Efectuați următoarele sarcini așa cum sunt afișate: –

Pas 1) Formulați o buclă for care rulează prin informațiile din antetul HTML ca o colecție. Driverul seleniu trebuie să găsească informațiile de antet ale tabelului HTML. Pentru a face acest lucru, folosim metoda FindElementByClass() și FindElementByTag() pentru a efectua sarcina așa cum este afișată

Modulul VBA ar arăta după cum urmează:

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

Pas 2) Apoi, driverul de seleniu va localiza datele din tabel folosind o abordare similară, așa cum s-a menționat mai sus. Trebuie să scrieți următorul cod: -

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

Modulul vba ar arăta după cum urmează:

Excel-ul poate fi inițializat prin intermediul atributului Range al foii Excel sau prin atributul celule al foii Excel. Pentru a reduce complexitatea script-ului VBA, datele de colectare sunt inițializate la atributul excel cells al foii 2 prezent în registrul de lucru. În plus, atributul text ajută la obținerea informațiilor text plasate sub eticheta HTML.

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

Modulul vba ar arăta după cum urmează:

Scurgeți informații de pe site folosind VBA

Pas 3) Odată ce macroscriptul este gata, treceți și atribuiți subrutinei butonului Excel și ieșiți din modulul VBA. Etichetați butonul ca reîmprospătare sau orice nume potrivit care ar putea fi inițializat la acesta. Pentru acest exemplu, butonul este inițializat ca reîmprospătare.

Scurgeți informații de pe site folosind VBA

Pas 4) Apăsați butonul de reîmprospătare pentru a obține rezultatul menționat mai jos

Scurgeți informații de pe site folosind VBA

Pas 5) Comparați rezultatele în excel cu rezultatele google chrome

Scurgeți informații de pe site folosind VBA

Rezumat

  • Selenium poate fi clasificat ca instrument de automatizare care facilitează răzuirea informațiilor din paginile web HTML pentru a efectua scraping web folosind Google Chrome.
  • Razuirea pe internet trebuie efectuată cu atenție.
  • În mod normal, este împotriva termenilor site-ului să răzuiți informații.
  • Când răzuirea se face prin seleniu, atunci oferă suport pentru mai multe browsere.
  • Cu alte cuvinte, racleta poate îndeplini sarcini similare de răzuire Firefox, Internet Explorer de asemenea.