• DİKKAT

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

Soru Web Sayfasındaki Tab'den Veri Çekme

Katılım
8 Nisan 2015
Mesajlar
59
Excel Vers. ve Dili
2010 Türkçe
Merhabalar,

Bir dinamik bir tablosu bulunan bir url'deki (örn:http://www.bestatistic.com/gol-istatistikleri.html) tab'lerden nasıl veri çekebilirim.

Buradaki temel sorun tab'e tıklayınca linkin değişmemesi, dolayısıyla verileri IE.navigate ile görememek. VBA ile istediğim Tab'e tıklamanın veya tıklamadan içindeki verileri çekmenin bir yolu var mıdır?

İlgilenenlere şimdiden teşekkür ederim.
 
Bu dosyada Sayfa1 deki komut düğmesine tıklanarak ilgili sitedeki liglere ait bilgiler gelmekte
Sayfa1 deki B sutünuna iki kere hızlıca tıklayınca ilgili lig yazısı Sayfa2 ye A1 hücresine gelmekte ve Sayfa2 ye gitmekte
Sayfa2 deki komut düğmesine tıklayınca istenen veriler gelmektedir.

Sayfa1 deki kodlar

Kod:
Private Declare Function ShowWindow Lib "user32" (ByVal hwnd As Long, ByVal nCmdShow As Long) As Long
Private Sub CommandButton1_Click()
Dim URL As String

Dim IE As Object

Range("A2:ıv5000").ClearContents

URL = "http://www.bestatistic.com/gol-istatistikleri.html"


Set IE = CreateObject("InternetExplorer.Application")
sat = 2

With IE
.Navigate URL
.Visible = 1
ShowWindow IE.hwnd, 2

Do Until IE.ReadyState = 4: DoEvents: Loop
Do While IE.Busy: DoEvents: Loop



Set ElementCol = IE.Document.getElementsByTagName("a")
For Each link In ElementCol
sat1 = sat1 + 1

If sat1 = 13 Then GoTo atla
If sat1 = 14 Then GoTo atla
If sat1 = 15 Then GoTo atla
If sat1 = 16 Then GoTo atla

If sat1 > 9 Then
Cells(sat, 1) = link.href
Cells(sat, 2) = link.innerText
sat = sat + 1
End If

If sat = 95 Then GoTo atla2
atla:
Next link

atla2:

IE.Quit: Set IE = Nothing
End With

MsgBox ("Bitti  ")
End Sub



Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)


If Target.Column = 2 Then
Sheets("Sayfa2").Cells(1, 2).Value = Target.Value2
Sheets("Sayfa2").Cells(1, 1).Value = Cells(Target.Row, 1).Value
'Cancel = True
Sheets("Sayfa2").Select
End If
Cancel = True
End Sub

Sayfa2 deki kodlar

Kod:
Private Declare Function ShowWindow Lib "user32" (ByVal hwnd As Long, ByVal nCmdShow As Long) As Long
Private Sub CommandButton1_Click()
Dim URL As String

Dim IE As Object

Range("A2:Z5000").ClearContents
URL = Cells(1, 1).Value '"http://www.bestatistic.com/gol-istatistikleri.html"

Set IE = CreateObject("InternetExplorer.Application")
sat = 3

With IE
.Navigate URL
.Visible = 1
ShowWindow IE.hwnd, 2

Do Until IE.ReadyState = 4: DoEvents: Loop
Do While IE.Busy: DoEvents: Loop

On Error Resume Next

'Application.Wait (Now + TimeValue("0:00:01"))

For k = 0 To 2

'MsgBox ie.Document.Body.GetElementsByTagName("TABLE").Item(k).innertext
'MsgBox k & " " & IE.Document.getElementsByTagName("table").Item(k).innerText
Set t = IE.Document.getElementsByTagName("table").Item(k)
For i = 0 To t.Rows.Length - 1
For j = 0 To t.Rows(i).Cells.Length - 1
Cells(sat, j + 1) = Replace((t.Rows(i).Cells(j).innerText), Chr(10), "")
Next
sat = sat + 1
Next
Next

IE.Quit: Set IE = Nothing
End With

MsgBox ("Bitti  ")
End Sub
 

Ekli dosyalar

Çok teşekkür ederim, akşam inceleme şansı bulacağım, mutlaka geri dönüş yapacağım.

Elinize sağlık.
 
Teşekkürler iyi çalışmalar
 
Hocam tekrar ellerinize sağlık, bir çok konuda ufkumu genişleten bir cevap yazmışsınız.
Ancak esasen sorduğum soruyu tam olarak belirtemediğimi farkettim.
Tabloları çok güzel bir şekilde almışsınız, fakat benim sormak istediğim soru şu; kullandığınız örnek linkte bu verileri "GENEL" sekmesinden çekiyor, benim yapmak istediğim ayrı ayrı iç ve dış saha sekmelerinden de çekmek. Bunun aynısını mackolik.com sitesine uyarlayacağım çünkü bu örnek linkte son sezon istatistikleri girilmemiş, ancak orada da aynı burda olduğu şekilde sekmeler var. İç ve dış sahayı ayrı ayrı çekmenin bir yolu var mıdır?

İlginize ve verdiğiniz bilgilere çok teşekkür ederim.
 
Merhaba zaten genel ,iç,dış tablolardan verileri alt alta çekiyor
 
Alttaki tabloları yeni farketmişim hocam, çok teşekkür ederim.
 
Tekrar konuyu hortlatıyorum ancak, aynı kodu http://www.mackolik.com/Puan-Durumu/s=51830/Turkiye-Spor-Toto-Super-Lig için çalıştırdığımda değişik sekmelerdeki verileri çekmek yerine aynı sayfadaki tabloları çekiyor.

k değişkenini değiştirmeye çalıştım istediğim sonucu alamadım. Sayfa 1'deki linklerin de işlevini tam anlamıyla çözemedim, sadece 1 lig örneği yeterli olduğundan ilk yolladığınız örnek üzerinde çalışıyorum
 
Sayfa1 deki kodlar veri alınacak wep adreslerini getiriyor.

bu kodu bir dene

Kod:
Sub deneme()
Dim URL As String

Dim IE As Object

Range("A1:AA100").ClearContents


URL = "http://www.mackolik.com/Puan-Durumu/s=51830/Turkiye-Spor-Toto-Super-Lig"


Set IE = CreateObject("InternetExplorer.Application")
sat = 1

With IE
.Navigate URL

.Visible = 1
.Width = 400
.Height = 850
.Left = 10 '250
.Top = 0

Do Until IE.ReadyState = 4: DoEvents: Loop
Do While IE.Busy: DoEvents: Loop

On Error Resume Next

'Application.Wait (Now + TimeValue("0:00:01"))

For k = 0 To 0

'MsgBox ie.Document.Body.GetElementsByTagName("TABLE").Item(k).innertext
'MsgBox k & " " & IE.Document.getElementsByTagName("table").Item(k).innerText
Set t = IE.Document.getElementsByTagName("table").Item(k)
For i = 0 To t.Rows.Length - 1
For j = 0 To t.Rows(i).Cells.Length - 1
Cells(sat, j + 1) = Replace((t.Rows(i).Cells(j).innerText), Chr(10), "")
Next
sat = sat + 1
Next
Next

IE.Quit: Set IE = Nothing
End With

MsgBox ("Bitti  ")
End Sub
 
Yolladığınız şekilde sadece puan durumunu çekiyor.
 
Ben 1. nolu mesajdaki sorunuza cevap yazmıştım 1 nolu mesajdaki sorunuz çözüldümü?
Diğer taraftan 11. nolu mesajınızdaki link diğerinden farklı şimdi buraya girmek istemiyorum her wep sitesinden veri almak mümkün gözükmüyor bu işlemler oldukca meşşekketli ve zaman istiyen işler size iyi çalışmalar diliyorum.
 
Ben 1. nolu mesajdaki sorunuza cevap yazmıştım 1 nolu mesajdaki sorunuz çözüldümü?
Diğer taraftan 11. nolu mesajınızdaki link diğerinden farklı şimdi buraya girmek istemiyorum her wep sitesinden veri almak mümkün gözükmüyor bu işlemler oldukca meşşekketli ve zaman istiyen işler size iyi çalışmalar diliyorum.

Emeğinize sağlık. Neye göre kolay veya zor oluyor veri çekme işlemi? Buradaki değişken nedir? Teşekkür ederim.
 
Emeğinize sağlık. Neye göre kolay veya zor oluyor veri çekme işlemi? Buradaki değişken nedir? Teşekkür ederim.

Kodları yazmak kolay değil her web sitesinden verilerin alma durumları farklı oluyor bazende çok zor oluyor.
Web sitelerinin sayfa yapıları sık sık değişiyor bu yüzden bu sorulara cevap vermekten kaçınıyorum

Diğer taraftan kodların ne işlem yaptığını buradan yazı dilinde yazmak izah etmek baya zor
 
Geri
Üst