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

sevenvironment

Altın Üye
Katılım
27 Ekim 2022
Mesajlar
29
Excel Vers. ve Dili
vba
Altın Üyelik Bitiş Tarihi
23-11-2027
Merhaba, arkadaşlar, selenium indirdim, chrome webdriver güncel sürüm kurdum, ama yine olmuyor.
hata bu Argument not optional

Private Sub CommandButtonl_Click()
Dim fiyat As New Selenium.WebDriver, veri As TableElement, aralık As Range
Application.ScreenUpdating = False
fiyat.Start 'chrome'
fiyat.Get 'https://www.isyatirim.com.tr/tr-tr/analiz/hisse/Sayfalar/default.aspx'
End Sub
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,248
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Linkin olduğu satırda TEK TIRNAK sembolü kullanmışsınız. @veyselemre bey onları ÇİFT TIRNAK olarak değiştirin demek istemiş.
 

veyselemre

Özel Üye
Katılım
9 Mart 2005
Mesajlar
3,646
Excel Vers. ve Dili
Pro Plus 2021
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.
 
Katılım
20 Şubat 2012
Mesajlar
242
Excel Vers. ve Dili
office2007 Türkçe
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
 

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 kullanarak, A1 hücresine yazılan 1 adet formülle bütün tabloyu alabilirsiniz....






Dosya:


.
 

sevenvironment

Altın Üye
Katılım
27 Ekim 2022
Mesajlar
29
Excel Vers. ve Dili
vba
Altın Üyelik Bitiş Tarihi
23-11-2027
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?
 
Katılım
20 Şubat 2012
Mesajlar
242
Excel Vers. ve Dili
office2007 Türkçe
"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ış.
 

sevenvironment

Altın Üye
Katılım
27 Ekim 2022
Mesajlar
29
Excel Vers. ve Dili
vba
Altın Üyelik Bitiş Tarihi
23-11-2027
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/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 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
 
Katılım
20 Şubat 2012
Mesajlar
242
Excel Vers. ve Dili
office2007 Türkçe
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
 

sevenvironment

Altın Üye
Katılım
27 Ekim 2022
Mesajlar
29
Excel Vers. ve Dili
vba
Altın Üyelik Bitiş Tarihi
23-11-2027
ş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 ?
 
Katılım
20 Şubat 2012
Mesajlar
242
Excel Vers. ve Dili
office2007 Türkçe
Xpath yerine ById ile yaparsanız bu sorun çöüzlecektir. Sanırım.

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