Selenium VBA Excel Eğitimi: Chrome Web Kazıma Örneği

Selenyum kullanarak Veri Kazıma nedir?

Selenium Google Chrome'u kullanarak web kazıma işlemi gerçekleştirmek için HTML web sayfalarından bilgi kazımayı kolaylaştıran otomasyon aracı olarak sınıflandırılabilir.

Veri Kazıma işlemini gerçekleştirmeden önce Excel Makrosu nasıl hazırlanır? Selenium?

Excel'de veri kazıma işlemine geçmeden önce excel makro dosyası üzerinde yapılması gereken bazı önkoşullar vardır.

Bu önkoşullar aşağıdaki gibidir: –

) 1 Adım Excel tabanlı bir Makro açın ve excel'in geliştirici seçeneğine erişin.

Veri Kazıma Yapmadan Önce Excel Makrosunu Hazırlayın

) 2 Adım Geliştirici şeridinin altında Visual Basic seçeneğini seçin.

Veri Kazıma Yapmadan Önce Excel Makrosunu Hazırlayın

) 3 Adım Yeni bir modül ekleyin.

Veri Kazıma Yapmadan Önce Excel Makrosunu Hazırlayın

) 4 Adım Yeni bir alt rutin başlatın ve bunu test2 olarak adlandırın.

Sub test2()
End sub

Modüldeki sonuçlar aşağıdaki gibi olacaktır: –

Veri Kazıma Yapmadan Önce Excel Makrosunu Hazırlayın

) 5 Adım Araç sekmesi ve referans altındaki referans seçeneğine erişin Selenium tür kütüphanesi. Aşağıdaki kütüphaneler, Google Chrome'u açmaya yardımcı olduğu ve makro betiklerinin geliştirilmesini kolaylaştırdığı için modüle referans olarak alınacaktır.

Veri Kazıma Yapmadan Önce Excel Makrosunu Hazırlayın

Artık Excel dosyası internet explorer ile etkileşime girmeye hazır. Sonraki adımlar, HTML'de veri kazımayı kolaylaştıracak bir makro komut dosyasının dahil edilmesi olacaktır.

Nasıl Açılır Google Chrome VBA'yı mı kullanıyorsunuz?

İşte, açılma adımı Google Chrome VBA'yı kullanma

) 1 Adım Alt programdaki değişkenleri aşağıda gösterildiği gibi bildirin ve başlatın.

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

) 2 Adım Google Chrome'u Selenium ve VBA kullanarak açmak için Driver.start "chrome" yazın ve tuşuna basın. F5.

Kod aşağıdaki gibidir.

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

Modül şu şekilde sonuçlanacaktır: –

Açılış Google Chrome VBA'yı kullanma

VBA kullanarak Google Chrome'da Web Sitesi Nasıl Açılır?

VBA kullanarak Google Chrome'a ​​erişebildiğinizde, bir sonraki adım VBA kullanarak bir web sitesine erişimi dahil etmek olacaktır. Bu, URL'nin öznitelikte çift tırnak işareti olarak geçmesi gereken get fonksiyonu tarafından kolaylaştırılır.

Aşağıdaki adımları gösterildiği gibi izleyin

Modül aşağıdaki gibi görünecektir: –

Web Sitesini Şurada Aç: Google Chrome VBA'yı kullanma

Makroyu yürütmek için F5 tuşuna basın.

Aşağıdaki web sayfası Google Chrome'da görüntülendiği gibi açılacaktır

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

Web Sitesini Şurada Aç: Google Chrome VBA'yı kullanma

Artık excel makrosu kazıma görevlerini gerçekleştirmeye hazır. Bir sonraki adım, selenyum ve VBA uygulanarak bilginin nasıl çıkarılabileceğini gösterecektir.

VBA kullanarak Web Sitesinden bilgi nasıl kazınır?

Günlük tüccarın web sitesinden verilere günlük olarak erişmek istediğini varsayalım. Günlük tüccar düğmeye her bastığında, piyasa verilerini otomatik olarak Excel'e çekmelidir.

Yukarıdaki web sitesinden bir öğeyi incelemek ve verilerin nasıl yapılandırıldığını gözlemlemek gerekli olacaktır. Control + tuşlarına basarak aşağıdaki HTML kaynak koduna erişin 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>

Kaynak kodu aşağıdaki gibi olacaktır: –

Görüldüğü gibi veriler tek bir HTML Tablosu olarak yapılandırılmıştır. Bu nedenle, HTML tablosundan tüm verileri çekmek için HTML tablosunun başlık bilgilerini ve tabloyla ilişkili karşılık gelen verileri çeken bir makronun tasarlanması gerekir. Aşağıdaki görevleri gösterildiği gibi gerçekleştirin: –

) 1 Adım HTML başlık bilgilerini bir koleksiyon olarak çalıştıran bir for döngüsü formüle edin. Selenyum sürücüsünün HTML tablosunun başlık bilgisini bulması gerekir. Bunu yapmak için, görevi gösterildiği gibi gerçekleştirmek üzere FindElementByClass() ve FindElementByTag() yöntemini kullanırız.

VBA modülü aşağıdaki gibi görünecektir: –

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

) 2 Adım Daha sonra, selenium sürücüsü yukarıda belirtilen benzer yaklaşımı kullanarak tablo verilerini bulur. Aşağıdaki kodu yazmanız gerekir: –

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

Vba modülü aşağıdaki gibi görünecektir: –

Excel, Excel sayfasının Range niteliği veya Excel sayfasının cells niteliği aracılığıyla başlatılabilir. VBA betiğinin karmaşıklığını azaltmak için, toplama verileri çalışma kitabında bulunan Sheet 2'nin excel cells niteliğine başlatılır. Ayrıca, text niteliği HTML etiketinin altına yerleştirilen metin bilgilerinin alınmasına yardımcı olur.

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

Vba modülü aşağıdaki gibi görünecektir: –

VBA Kullanarak Web Sitesinden Bilgi Kazıyın

) 3 Adım Makro betiği hazır olduğunda, alt yordamı excel düğmesine iletin ve atayın ve VBA modülünden çıkın. Düğmeyi yenileme olarak veya başlatılabilecek herhangi bir uygun ad olarak etiketleyin. Bu örnekte düğme yenileme olarak başlatılmıştır.

VBA Kullanarak Web Sitesinden Bilgi Kazıyın

) 4 Adım Aşağıda belirtilen çıktıyı almak için yenile düğmesine basın

VBA Kullanarak Web Sitesinden Bilgi Kazıyın

) 5 Adım Excel'deki sonuçları Google Chrome sonuçlarıyla karşılaştırın

VBA Kullanarak Web Sitesinden Bilgi Kazıyın

ÖZET

  • Selenium Google Chrome'u kullanarak web kazıma işlemi gerçekleştirmek için HTML web sayfalarından bilgi kazımayı kolaylaştıran otomasyon aracı olarak sınıflandırılabilir.
  • İnternetten kazıma işleminin dikkatli yapılması gerekmektedir.
  • Bilgileri kazımak normalde web sitesinin şartlarına aykırıdır.
  • Kazıma selenyum üzerinden yapıldığında çoklu tarayıcı desteği sunar.
  • Başka bir deyişle, kazıyıcı, kazıma gibi benzer görevleri gerçekleştirebilir. Firefox, internet explorer da.