• DİKKAT

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

İş yatırım üzerinden veri çekme

Linkin olduğu satırda TEK TIRNAK sembolü kullanmışsınız. @veyselemre bey onları ÇİFT TIRNAK olarak değiştirin demek istemiş.
 
Metin belirteci olarak vba da tek tırnak olmaz çift tırnak kullanılır. Asıl sorun bu olmakla birlikte tek tırnakları çift tırnakla değiştiğinde bile siteye girdikten sonra site otomatik olarak çıkış yapmaktadır. Büyük ihtimalle tarayıcı dışından girişleri önlemek için güvenlik tedbiri tanımlı sitede.
 
Birde böyle deneyin..
Kod:
 Sub CommandButtonl_Click()
Dim fiyat, veri As TableElement, aralık As Range
Application.ScreenUpdating = False
Set fiyat = New Selenium.ChromeDriver
fiyat.Start "chrome"
fiyat.Get "https://www.isyatirim.com.tr/tr-tr/analiz/hisse/Sayfalar/default.aspx"
End Sub
 
Google Sheets kullanarak, A1 hücresine yazılan 1 adet formülle bütün tabloyu alabilirsiniz....






Dosya:


.
 
Birde böyle deneyin..
Kod:
 Sub CommandButtonl_Click()
Dim fiyat, veri As TableElement, aralık As Range
Application.ScreenUpdating = False
Set fiyat = New Selenium.ChromeDriver
fiyat.Start "chrome"
fiyat.Get "https://www.isyatirim.com.tr/tr-tr/analiz/hisse/Sayfalar/default.aspx"
End Sub
hocam çok teşekkür ederim. oldu, peki benim hatam nerede?
 
"Set fiyat = New Selenium.ChromeDriver"

İşlemi yapacak object'i tanımlamamışsınız. Yani ChromeDriver sizde henüz görev ataması yapılmadan işleme çağrılmış.
 
merhabalar yine ben :),

kodu oluşturdum fakat tablo altındaki sektör ortalamalarını çekemedim çünkü incele dediğimde , o bölgeyi fullxpath de table olarak vermemişler, bunu tablonun altına nasıl ekleyebilirim?

Option Explicit

Private Sub ComboBox1_Change()

Dim sektör As New Selenium.WebDriver, tablo As TableElement, aralık As Range, i As Long

Application.ScreenUpdating = False

sektör.Start "chrome"

sektör.Get "https://www.isyatirim.com.tr/tr-tr/...l-Degerler-Ve-Oranlar.aspx?sektor=0051#page-5"

sektör.FindElementByXPath("/html/body/form/div[4]/div/div[2]/div/div/div[1]/div/div[3]/div[2]/div/div/div[1]/div/div/div[1]/div[1]/div/div[2]/span/span[1]/span/span[1]").Click

sektör.FindElementByXPath("/html/body/span/span/span[1]/input").SendKeys ComboBox1.Value

sektör.FindElementByXPath("/html/body/span/span/span[2]").Click

Set tablo = sektör.FindElementByXPath("/html/body/form/div[4]/div/div[2]/div/div/div[1]/div/div[3]/div[2]/div/div/div[1]/div/div/div[2]/div[2]/div[5]/div[2]/div/div[1]/div[2]/div[2]/table").AsTable

tablo.ToExcel Range("a1")

Range("B2:M1000").Select

For Each aralık In Selection

If Not IsEmpty(aralık) And IsNumeric(aralık.Value) Then

aralık.Value = CDbl(aralık.Value)

End If

Next aralık

Cells.Select

Cells.EntireColumn.AutoFit

With Selection

.HorizontalAlignment = xlCenter

.VerticalAlignment = xlCenter

End With

Range("o12").Select



End Sub
 
Merhaba.İstediğiniz böyle bir şey midir ?

Kod:
Private Sub ComboBox1_Change()

Dim sektör As New Selenium.WebDriver, tablo As TableElement, aralık As Range, i As Long

Application.ScreenUpdating = False

sektör.Start "chrome"

sektör.Get "https://www.isyatirim.com.tr/tr-tr/analiz/hisse/Sayfalar/Temel-Degerler-Ve-Oranlar.aspx?sektor=0051#page-5"

sektör.FindElementByXPath("/html/body/form/div[4]/div/div[2]/div/div/div[1]/div/div[3]/div[2]/div/div/div[1]/div/div/div[1]/div[1]/div/div[2]/span/span[1]/span/span[1]").Click

sektör.FindElementByXPath("/html/body/span/span/span[1]/input").SendKeys "Bankacılık"

sektör.FindElementByXPath("/html/body/span/span/span[2]").Click

Set tablo = sektör.FindElementById("temelTBody_T_Ort").AsTable

tablo.ToExcel Range("a1")

Range("B2:M1000").Select

For Each aralık In Selection

If Not IsEmpty(aralık) And IsNumeric(aralık.Value) Then

aralık.Value = CDbl(aralık.Value)

End If

Next aralık

Cells.Select

Cells.EntireColumn.AutoFit

With Selection

.HorizontalAlignment = xlCenter

.VerticalAlignment = xlCenter

End With

Range("o12").Select



End Sub
 
şu şekilde olmasını istiyorum. combobox a sektör değiştirdiğimde bu şekilde tablo gelmesini istiyor ama birde şunu fark ettim, önceki tabloyu otomatik silmesi lazım ki bir sonraki tabloyu göstersin, onu nasıl yapacağım ?
83635ui.png
 
Xpath yerine ById ile yaparsanız bu sorun çöüzlecektir. Sanırım.

Set tablo = sektör.FindElementById("summaryBasicData").AsTable
 
Geri
Üst