Tefas.gov.tr Veri Çekme Çalışması

20/03/2024, 13:45

maboc

merhabalar
araştırmalar sonucu tefas.gov.tr den excelle nasıl veri çekilir çalışması yaptım. yaptım ama bir kaç eksiği gideremedim bu konuda yardımınızı bekliyorum

günlük getiri sütunu her veri yüklemesinde yenileniyor karışık bir liste halinde geliyor
örnek %0,0000 sayı olarak gelmesi gerekirken veriler bu tarz geliyor
%2,86
496,3400
49634%

bu kod satırına ne yazmam gerekiyor ki böyle veri gelsin %0,0000
'Günlük Getiri
Sheets("Fon").Range("E" & i) = htmldoc.getElementsByTagName("span")(4).innerText


teşekkür ederim yardımlarınız için


kod bilgileri ve Excel dosyası
Kod:
Sub F()

Dim i, sonsat As Integer
Dim url As String
Dim h As Integer
Dim j As Integer
Dim a As String


Dim xmlreq As New MSXML2.XMLHTTP60
Dim htmldoc As New MSHTML.HTMLDocument


sonsat = Sheets("Fon").Range("A10000").End(xlUp).Row

For i = 6 To sonsat

On Error Resume Next


url = Sheets("Fon").Range("A" & i)

xmlreq.Open "GET", url, False

xmlreq.send

If xmlreq.Status <> 200 Then

MsgBox "Sayfaya Ulaşılamadı"

Exit Sub
End If

htmldoc.body.innerHTML = xmlreq.responseText

'FON Başlık
Sheets("Fon").Range("C" & i) = htmldoc.getElementById("MainContent_FormViewMainIndicators_LabelFund").innerText
'FON FİYAT
Sheets("Fon").Range("D" & i) = htmldoc.getElementsByTagName("span")(3).innerText
'FON KOD
  Sheets("Fon").Range("B" & i) = htmldoc.getElementsByClassName("fund-profile-item")(0).innerText
'Günlük Getiri
Sheets("Fon").Range("E" & i) = htmldoc.getElementsByTagName("span")(4).innerText
'Kategori
Sheets("Fon").Range("F" & i) = htmldoc.getElementsByTagName("span")(7).innerText
Next




End Sub
23/03/2024, 23:31

atoykan

Merhaba Sayın @maboc

kodunuzu aşağıdaki gibi güncelleyin.
Dim i As Integer, sonsat As Integer, h As Integer, j As Integer, a As String
Dim url As String
Dim xmlreq As Object
Dim htmldoc As New MSHTML.HTMLDocument

Set xmlreq = CreateObject("MSXML2.XMLHTTP.6.0")
sonsat = Sheets("Fon").Range("A10000").End(xlUp).Row

For i = 6 To sonsat
On Error Resume Next

url = Sheets("Fon").Range("A" & i)
xmlreq.Open "GET", url, False
xmlreq.send

If xmlreq.Status <> 200 Then
MsgBox "Sayfaya Ulaşılamadı"
Exit Sub
End If

htmldoc.body.innerHTML = xmlreq.responseText
'FON Başlık
Sheets("Fon").Range("C" & i) = htmldoc.getElementById("MainContent_FormViewMainIndicators_LabelFund").innerText
'FON FİYAT
Sheets("Fon").Range("D" & i) = htmldoc.getElementsByTagName("span")(3).innerText
'FON KOD
Sheets("Fon").Range("B" & i) = htmldoc.getElementsByClassName("fund-profile-item")(0).innerText
'Günlük Getiri
Dim günlük_getiri As String, temiz_günlük_getiri As String, tveri As Double
günlük_getiri = htmldoc.getElementsByTagName("span")(4).innerText
temiz_günlük_getiri = Replace(günlük_getiri, "%", "")
tveri = CDbl(temiz_günlük_getiri)
Sheets("Fon").Range("E" & i).Value = tveri / 100
Sheets("Fon").Range("E" & i).NumberFormat = "0.00000%"
'Kategori
Sheets("Fon").Range("F" & i) = htmldoc.getElementsByTagName("span")(7).innerText
Next
24/03/2024, 20:30

maboc

(23/03/2024, 23:31)atoykan yazdı: Merhaba Sayın @maboc

kodunuzu aşağıdaki gibi güncelleyin.
Dim i As Integer, sonsat As Integer, h As Integer, j As Integer, a As String
Dim url As String
Dim xmlreq As Object
Dim htmldoc As New MSHTML.HTMLDocument

Set xmlreq = CreateObject("MSXML2.XMLHTTP.6.0")
sonsat = Sheets("Fon").Range("A10000").End(xlUp).Row

For i = 6 To sonsat
On Error Resume Next

url = Sheets("Fon").Range("A" & i)
xmlreq.Open "GET", url, False
xmlreq.send

If xmlreq.Status <> 200 Then
MsgBox "Sayfaya Ulaşılamadı"
Exit Sub
End If

htmldoc.body.innerHTML = xmlreq.responseText
'FON Başlık
Sheets("Fon").Range("C" & i) = htmldoc.getElementById("MainContent_FormViewMainIndicators_LabelFund").innerText
'FON FİYAT
Sheets("Fon").Range("D" & i) = htmldoc.getElementsByTagName("span")(3).innerText
'FON KOD
Sheets("Fon").Range("B" & i) = htmldoc.getElementsByClassName("fund-profile-item")(0).innerText
'Günlük Getiri
Dim günlük_getiri As String, temiz_günlük_getiri As String, tveri As Double
günlük_getiri = htmldoc.getElementsByTagName("span")(4).innerText
temiz_günlük_getiri = Replace(günlük_getiri, "%", "")
tveri = CDbl(temiz_günlük_getiri)
Sheets("Fon").Range("E" & i).Value = tveri / 100
Sheets("Fon").Range("E" & i).NumberFormat = "0.00000%"
'Kategori
Sheets("Fon").Range("F" & i) = htmldoc.getElementsByTagName("span")(7).innerText
Next

teşekkür ederim yardımınız allah razı olsun
24/03/2024, 23:25

atoykan

Rica ederim, iyi çalışmalar.