• Foruma hoş geldin 👋 Ziyaretçi

    Forum içeriğine ve tüm hizmetlerimize erişim sağlamak için foruma kayıt olmalı ya da giriş yapmalısınız. Foruma üye olmak tamamen ücretsizdir.

Çözüldü İnternetden Süper lig puan durumu excele alma

Bu konu çözüldü olarak işaretlenmiştir. Çözülmediğini düşünüyorsanız konuyu rapor edebilirsiniz.
Durum
Konu Çözümlendiği İçin Kapatılmıştır.

Refaz

Destek Ekibi
Katılım
11 Ağu 2021
Mesajlar
5,155
Çözümler
653
Aldığı beğeni
5,010
Excel V
Office 2024 TR
Merhaba.

Acemi olarak bir siteden maç puan durumu tablosu çektim ve kod çalışıyor.

Yaptığım kodda A3 e geliyor sonra B3 e sonrasında A4 ve B4 diye taki 20.satıra kadar veriler aktarılıyor.
En sondada C ileJ aralığına veri geliyor.

Sorum ise kod çalışırken önce satır no ikinci olarak klüp adı ve sonrasında C den J sütununa kadar ilgili verilen sırayla gelmesi gerekiyor.
Yani 3.satıra A3e geldi,B3 e klüp ad,C3 ten J3 e kadar ilgili verilerin gelip alt satırdan aynen devam etmesi gerekiyor.
Kodu adım adım çalıştırınca anlatmak istediğim anlaşılır bence.

Sitede tesadüf bulundu puan tablosu site aranırken şansımada hep böyle garip html kodlu siteler çıkıyor :)
Birde başkalarına lazım olursa diye konu açtım örnek olarak.
Kodda altta.

yy.gif


Rich (BB code):
Sub TAbloAL1Dz()
    Dim html As Object, syf As Worksheet
    Dim satir As Long, sutun As Byte, x As Byte
 
'    Application.ScreenUpdating = False
    Set syf = ThisWorkbook.Worksheets("Sayfa1")
    syf.UsedRange.ClearContents
    On Error GoTo hata
 
    Set html = CreateObject("htmlfile")
 
    With CreateObject("MSXML2.XMLHTTP")
        .Open "GET", "https://www.hurriyet.com.tr/sporarena/puan-durumu/", False
        .send
        html.body.innerHTML = .responseText
    End With
 
    syf.UsedRange.Cells.ClearContents
    
    satir = 2
    sutun = 2
    
    '----------------------------------------Basliklar icin-----------------------------------------------------------------------
    syf.Cells(1, 1).Value = html.getElementsByClassName("pointtable-action-wrapper ")(0).getElementsByTagName("h1")(0).innerText
    
    For Each tr In html.getElementsByClassName("pointtable-header")
        For Each td In tr.getElementsByClassName("header-main")
            For Each td2 In tr.getElementsByClassName("header-detail")
                syf.Cells(satir, sutun).Value = td.innerText & td2.innerText
            Next
        Next
        For Each td In tr.getElementsByClassName("pointtable-header-center")
            For Each td2 In td.getElementsByClassName("pointtable-small-item")
             sutun = sutun + 1
             syf.Cells(satir, sutun).Value = td2.innerText
            Next
        Next
    Next


'------------------------------------------------------------------------------------------------------


   'Satir ve sütunlar tablo
    satir = 3
    sutun = 1
    
    For Each tr In html.getElementsByClassName("pointtable-content")
        For Each td In tr.getElementsByClassName("pointtable-content-left")
            For Each td1 In td.getElementsByClassName("pointtable-team-number")
                syf.Cells(satir, sutun).Value = td1.innerText
                For Each td2 In td.getElementsByTagName("h3")
                    syf.Cells(satir, sutun + 1).Value = td2.innerText
                Next
            Next
            satir = satir + 1
            sutun = 1
        Next
        satir = 3
        sutun = 3
        For Each td3 In tr.getElementsByClassName("pointtable-content-center")
            For Each td4 In td3.getElementsByClassName("pointtable-small-item")
                syf.Cells(satir, sutun).Value = td4.innerText
                sutun = sutun + 1
            Next
            satir = satir + 1
            sutun = 3
        Next
    Next
    GoTo sonsub
 
hata:
  MsgBox "Hata olustu", vbCritical, "Hata"
sonsub:
  Set syf = Nothing: Set html = Nothing: Set tr = Nothing: Set td = Nothing
'  Application.ScreenUpdating = True
End Sub
 

Ekli dosyalar

Çözüm
aşağıdaki gibi dener misiniz?
Kod:
'------------------------------------------------------------------------------------------------------

   'Satir ve sütunlar tablo
    satir = 3
    sutun = 1
    
    For Each tr In html.getElementsByClassName("pointtable-row")

        For Each P_C_left In tr.getElementsByClassName("pointtable-content-left")
        sutun = 1
            For Each P_T_Name In P_C_left.getElementsByClassName("pointtable-team-number")
                syf.Cells(satir, sutun).Value = P_T_Name.innerText
                sutun = sutun + 1
            Next
            For Each P_T_Name In P_C_left.getElementsByClassName("pointtable-team-name")
                syf.Cells(satir, sutun).Value = P_T_Name.innerText...
aşağıdaki gibi dener misiniz?
Kod:
'------------------------------------------------------------------------------------------------------

   'Satir ve sütunlar tablo
    satir = 3
    sutun = 1
    
    For Each tr In html.getElementsByClassName("pointtable-row")

        For Each P_C_left In tr.getElementsByClassName("pointtable-content-left")
        sutun = 1
            For Each P_T_Name In P_C_left.getElementsByClassName("pointtable-team-number")
                syf.Cells(satir, sutun).Value = P_T_Name.innerText
                sutun = sutun + 1
            Next
            For Each P_T_Name In P_C_left.getElementsByClassName("pointtable-team-name")
                syf.Cells(satir, sutun).Value = P_T_Name.innerText
                sutun = sutun + 1
            Next
        Next P_C_left
        For Each P_C_center In tr.getElementsByClassName("pointtable-content-center")
            For Each P_T_Name In P_C_center.getElementsByClassName("pointtable-small-item")
                syf.Cells(satir, sutun).Value = P_T_Name.innerText
                sutun = sutun + 1
            Next
        Next P_C_center

        satir = satir + 1
        sutun = 1
    Next

    GoTo sonsub
 
Çözüm
Elinize sağlık abey.
Aslında bende ordan gitmek istemiştim ama yapamamıştım :)
Artık başka soruda görüşmek dileğiyle,iyi geceler :)
 
Durum
Konu Çözümlendiği İçin Kapatılmıştır.
Geri
Üst