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.
) 2 Adım Geliştirici şeridinin altında Visual Basic seçeneğini seçin.
) 3 Adım Yeni bir modül ekleyin.
) 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: –
) 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.
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: –
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: –
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
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: –
) 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.
) 4 Adım Aşağıda belirtilen çıktıyı almak için yenile düğmesine basın
) 5 Adım Excel'deki sonuçları Google Chrome sonuçlarıyla karşılaştırı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.