Webden veri çekme

okan32

Altın Üye
Katılım
12 Mayıs 2016
Mesajlar
386
Excel Vers. ve Dili
Ofis 2019- 32 Bit - Türkçe
Altın Üyelik Bitiş Tarihi
16-04-2026
Aşağıdaki kod ile Ziraat Katılım Bankasından altın alış satış tutarlarını excele çekiyordum fakat site arayüzü değiştiği için kod hata veriyor. Uğraştım ama yapamadım yardım ederseniz sevinirim. Şimdiden teşekkür ederim
Kod:
Sub veriCek()


    Dim URL As String
    Dim IE As Object
    
    Range("H2") = Format(Now, "dd.mm.yyyy hh:mm")
    URL = "https://www.ziraatkatilim.com.tr"
    
    Set IE = CreateObject("InternetExplorer.Application")
    IE.Navigate URL
    
    Do Until IE.ReadyState = 4
    Loop
    
    Range("A2:B2") = Empty
    
    Range("A2") = IE.document.querySelectorAll("#block-zk-content > article > div > div:nth-child(1) > div > div > div.col-lg-7.col-md-7 > div > div > div > div:nth-child(4) > div > div:nth-child(2) > div > div").Item(0).innerText / 1
    Range("B2") = IE.document.querySelectorAll("#block-zk-content > article > div > div:nth-child(1) > div > div > div.col-lg-7.col-md-7 > div > div > div > div:nth-child(4) > div > div:nth-child(3) > div > div").Item(0).innerText / 1
    Range("A2:B2").NumberFormat = "#.##"
    Range("G2").Value = Range("J2").Value
    Range("G3").Value = Range("J3").Value
    Range("G4").Value = Range("J4").Value
    Range("G5").Value = Range("J5").Value
    UserForm1.Show 'ana kod bloğuna geçerken bu satır aktif edilmeli

    IE.Quit
    Set IE = Nothing

 
End Sub
 

veyselemre

Özel Üye
Katılım
9 Mart 2005
Mesajlar
3,653
Excel Vers. ve Dili
Pro Plus 2021
Kod:
Sub test()
    With CreateObject("InternetExplorer.Application")
        .Visible = False
        .navigate "https://www.ziraatkatilim.com.tr"
basla:
        Do While .Busy Or .readyState <> 4
            DoEvents
        Loop

        On Error Resume Next
        With .document
            Set lst = .getelementbyId("piyasalar-finance-portal-wrapper")
            If lst Is Nothing Then GoTo basla
            On Error GoTo 0
            Set rws = lst.getelementsByClassName("row align-items-center")
            Range("A1:C5") = Empty
            Range("A1:C1").Value = Array(Time, "ALIŞ", "SATIŞ")
            For i = 0 To rws.Length - 1
                Set cinsi = rws(i).getelementsByClassName("finance-portal__currency-title text-center font-weight-bold")
                Set kurlar = rws(i).getelementsByClassName("finance-portal__currency-val")
                Range("A" & i + 2).Value = cinsi(0).innerText
                Range("B" & i + 2).Resize(, 2).NumberFormat = "#,##0.0000"
                Range("B" & i + 2).Value = CDbl(Replace(kurlar(0).innerText, ",", "."))
                Range("C" & i + 2).Value = CDbl(Replace(kurlar(1).innerText, ",", "."))
            Next i
        End With
        .Quit
    End With

End Sub
 

okan32

Altın Üye
Katılım
12 Mayıs 2016
Mesajlar
386
Excel Vers. ve Dili
Ofis 2019- 32 Bit - Türkçe
Altın Üyelik Bitiş Tarihi
16-04-2026
Teşekkürler Sayın veyselemre
 

Haluk

Özel Üye
Katılım
7 Temmuz 2004
Mesajlar
12,406
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Altın Üyelik Bitiş Tarihi
Google Sheets ile bir alternatif:

Verileri güncellemek için Sorgu ID için herhangi birkaç basamaklı sayı yazılması yeterlidir.


.Capture.PNG

.
 
Katılım
24 Nisan 2005
Mesajlar
3,680
Excel Vers. ve Dili
Office 2016 EN 64 Bit
Altın Üyelik Bitiş Tarihi
25/05/2022

Haluk

Özel Üye
Katılım
7 Temmuz 2004
Mesajlar
12,406
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Altın Üyelik Bitiş Tarihi
Asri Bey,

Google Sheets'deki IMPORTXML fonksiyonunda, tıpkı VBA'deki gibi XPATH kullanıyoruz. Mantık olarak çok farklı değil.

Verilerin alınması için uzun VBA kodları yerine böyle kısa tek satırlık bir formülle alınabiliyor.

Söz konusu URL'de aradığımız bilgiler 7 ve 8. division'lar olduğu için, formülün INDEX kısmında bu değerleri kullandım....

.
 
Katılım
24 Nisan 2005
Mesajlar
3,680
Excel Vers. ve Dili
Office 2016 EN 64 Bit
Altın Üyelik Bitiş Tarihi
25/05/2022
Asri Bey,

Google Sheets'deki IMPORTXML fonksiyonunda, tıpkı VBA'deki gibi XPATH kullanıyoruz. Mantık olarak çok farklı değil.

Verilerin alınması için uzun VBA kodları yerine böyle kısa tek satırlık bir formülle alınabiliyor.

Söz konusu URL'de aradığımız bilgiler 7 ve 8. division'lar olduğu için, formülün INDEX kısmında bu değerleri kullandım....

.
Açıklama için teşekkür ederim.
 

Haluk

Özel Üye
Katılım
7 Temmuz 2004
Mesajlar
12,406
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Altın Üyelik Bitiş Tarihi
Google Sheets kullanımını merak edenler için ayrıca; aşağıdaki linkte yer alan uygulamada buna benzer değişik formüller ve ilave olarak kullanılan script'ler (VBA'deki makroların karşılığı) bulunmaktadır. (Not: Uygulama ücretlidir)


.
 

okan32

Altın Üye
Katılım
12 Mayıs 2016
Mesajlar
386
Excel Vers. ve Dili
Ofis 2019- 32 Bit - Türkçe
Altın Üyelik Bitiş Tarihi
16-04-2026
Teşekkürler haluk hocam
 
Üst