• DİKKAT

    DOSYA İndirmek/Yüklemek için ÜCRETLİ ALTIN ÜYELİK Gereklidir!
    Altın Üyelik Hakkında Bilgi

Webden id'ye Göre Veri Çekme

  • Konbuyu başlatan Konbuyu başlatan steppe
  • Başlangıç tarihi Başlangıç tarihi
Diğer alternatifler ise;

Kod:
    If HTTP.Status = 200 Then
        HTML.body.innerHTML = HTTP.responseText
        MsgBox HTML.querySelectorAll("[data-price]")(1).innerText
        MsgBox Split(HTML.querySelectorAll("a[href$=""/ekonomi/doviz""]")(0).innerText, vbLf)(0)
        MsgBox HTML.querySelector("div.finance-data").getElementsByTagName("span")(4).innerText
        MsgBox Split(HTML.querySelector("div.finance-data").Children(0).innerText, vbLf)(2)
        MsgBox HTML.querySelector("div.finance-data").getElementsByTagName("span")(4).getAttribute("data-price")
    End If

.

Haluk bey bu kodlar benim bilgisayarda çalışmadı. Eklemem gereken referans mı var ?
 
@Haluk bey ,

Referans ekli ama hata devam ediyor. 64 bit office sorun olabilir mi?


1571124716586.png
 
Verdiği hata mesajı nedir ve hangi satırda oluşuyor?

Ayrıca, 9 No'lu mesaj ekindeki dosya çalışıyor mu?

Siz muhtemelen verdiğim kodu yanlış yere kopyaladınız, olması gereken şekli aşağıda;

PHP:
Sub TestNTV()
    ' Haluk - 14/10/2019
    ' sa4truss@gmail.com
    '
    '*************************************************************************
    'Tools >> References >> Microsoft HTML Object Library eklenmelidir....
    '*************************************************************************
    '
    Dim HTTP As Object
    Dim HTML As New HTMLDocument
    Dim URL As String
    
    Range("A1:B3") = ""
    URL = "https://www.ntv.com.tr/"
 
    Set HTTP = CreateObject("MSXML2.ServerXMLHTTP")
 
    HTTP.Open "GET", URL, False
    HTTP.send
    
    If HTTP.Status = 200 Then
        HTML.body.innerHTML = HTTP.responseText
        MsgBox HTML.querySelectorAll("[data-price]")(1).innerText
        MsgBox Split(HTML.querySelectorAll("a[href$=""/ekonomi/doviz""]")(0).innerText, vbLf)(0)
        MsgBox HTML.querySelector("div.finance-data").getElementsByTagName("span")(4).innerText
        MsgBox Split(HTML.querySelector("div.finance-data").Children(0).innerText, vbLf)(2)
        MsgBox HTML.querySelector("div.finance-data").getElementsByTagName("span")(4).getAttribute("data-price")
    End If
        
    MsgBox "Veriler Güncellendi"
    Set HTML = Nothing
    Set HTTP = Nothing
End Sub

.

.
 
Son düzenleme:
Haluk hocam aşağıdaki nesneyi set etmek gerekiyormuş. CreateObject("MSXML2.XMLHTTP") nesnesini set etmiştim. İkisi arasındaki fark nedir ?
Microsoft HTML Object Library'i set edemez miyiz?


Set HTTP = CreateObject("MSXML2.ServerXMLHTTP")
 
Son düzenleme:
Bahsettiğinizden dolayı hata mesajı almazsınız.... aldığınız hata mesajının ne olduğunu halen söylemediğiniz için ben de yine varsayımlara dayanıyorum.....

Muhtemelen siz hata aldığınızda, "HTML" nesnesi "Object" olarak deklare edilmiş ve kodunuzda aşağıda ifade vardı;

Kod:
Set HTML = CreateObject("HTMLFILE")


Halbuki bu kodun özelinde; kullandığımız "HTML" değişkenin projeye eklenen "Microsoft HTML Object Library" referansına göre deklare edilmesi gerekir..... Bu durumda gerekli düzeltme yukarıda 25 No'lu mesajda belirtildiği gibi;

Kod:
Dim HTML As New HTMLDocument

olmalıdır.


Diğer yandan; ....... "Kod anlatılmaz, yazılır.....!" Ama yine de kısaca anlatmak gerekirse; "MSXML2.XMLHTTP" ile "MSXML2.ServerXMLHTTP" arasındaki fark; verilerin alınacağı sunucuda eğer veriler çok kısa aralıklarla güncelleniyorsa, HTTP isteğinin gönderildiği sunucunun desteklemesi şartıyla "MSXML2.ServerXMLHTTP" kullanarak cache belleği boşaltılıp sonuçlar son kullanıcıya gösterilir.

.
 
Son düzenleme:
Haluk bey açıklamalarınız için teşekkür ederim.
 
Haluk bey selamlar,

"MSXML2.ServerXMLHTTP" nesnesi "İnternet.Explorer" nesnesinden daha kullanışlı, kodlaması basit ve hızlı geldi.
Size sormak istediğim bir konu daha var. Bu nesnede internet explorer'ı görünür olarak açabilir miyiz.
 
"Internet.Explorer" ayrı bir nesne, "XMLHTTP" ayrı bir nesne .... aralarında hiçbir ilgi yok.

Kullanılan kodlama tekniği her ikisi için de hemen hemen aynı. Aralarındaki fark; "Internet.Explorer" sunucuya göndediğiniz istek, "render" edildikten sonra son kullanıcıya gelir. "XMLHTTP" yönteminde ise, sunucudan geri dönen istek ham olarak geldiği için, vakit kaybı yaşanmaz.

Eğer gerekliyse, "XMLHTTP" kullandığınız kodun bir yerinde ayrıca "Internet.Explorer" oluşturup onunla URL'e bağlanıp, bu nesneyi "Visible" yaparsınız.

.
 
Son düzenleme:
2 nesneyi'de veri almak için kullanmak istiyorum. Bazen kullanıcı adı girmemiz yada data almadan önce seçimler yapmamız gerekiyor. 2 nesneyi entegre biçimde çalıştırabilir miyiz.
 
Belki yapılır, belki de ona gerek kalmadan sadece HTTP ile yapılır ..... Sitenin yapısını görmek lazım.

.
 
Hocam datalara ihtiyacım yok. XMLHTTP nesnesini öğrenmek istiyorum.İnternet Explorer nesnesi ile kendi hazırladığım bir dosya var.
Bu konu haricinde, XMLHTTP ile ilgili genel bir eğitim seti hazırlarsanız onu satın alırım.
 
Merhaba,
Ben excele webdeki json dosyasından veri aktarıyorum.(https://koineks.com/ticker)
Bu işlemi makro ile değil de Veri sekmesinde bulunan Webden Al bölümünü kullanarak yapıyorum . Verileri düzenli olarak çekiyor ama zaman zaman DataSource.Error Web Sayfası işlevi, 100 saniyelik zaman aşımı süresi içinde bitmedi gibi bir hata veriyor ve Tamam tuşuna basmadan ilerlemiyor. Bu hatanın sebebi nedir acaba? Nasıl çözebilirim, yardımcı olursanız sevinirim.
 
JSon tabloyu okuyan bir VBA ile çok daha rahat edilir .....

.
 
Kullandığınız Excel 32 Bit ise VBA ile "JScript", 64 Bit ise "Regular Expressions" kullanarak verileri alabilirsiniz.

.
 
Geri
Üst