Soru Selenium ile Tez isimlerini çekme

ibere

Altın Üye
Katılım
31 Mart 2018
Mesajlar
129
Excel Vers. ve Dili
Office 365
Altın Üyelik Bitiş Tarihi
21-04-2027
Arkadaşlar selenium ile tez isimlerini excel dosyasına çektirmek istiyorum. İlk sayfayı ve tez sayısını çektirebiliyorum fakat diğer sayfalardaki tez isimlerini bir türlü çektiremedim. Rica etsem yardımcı olabilir misiniz acaba ? Teşekkürler

239294

Kod:
Sub test()
Dim x As New Selenium.WebDriver, table As TableElement
Dim a As String
Dim d As Variant
Dim adet As Integer
x.Start "Chrome"
x.Get "https://tez.yok.gov.tr/UlusalTezMerkezi/"
x.FindElementById("neden").SendKeys Range("a1")
x.FindElementByXPath("//*[@id='searchMotor2']/form/table/tbody/tr/td/table/tbody/tr[2]/td[5]/input[3]").Click
a = x.FindElementByXPath("//*[@id='div1']/table/tfoot/tr/td/p").Text
d = Split(a, " ")
adet = d(3) + 0
 

ibere

Altın Üye
Katılım
31 Mart 2018
Mesajlar
129
Excel Vers. ve Dili
Office 365
Altın Üyelik Bitiş Tarihi
21-04-2027
Kod:
Sub test()
Dim x As New Selenium.WebDriver, table As TableElement
Dim a As String
Dim d As Variant
Dim adet As Integer
Dim lrow As Long
x.Start "Chrome"
x.Get "https://tez.yok.gov.tr/UlusalTezMerkezi/"
x.FindElementById("neden").SendKeys Range("a1")
x.FindElementByXPath("//*[@id='searchMotor2']/form/table/tbody/tr/td/table/tbody/tr[2]/td[5]/input[3]").Click
x.Wait 2000
a = x.FindElementByXPath("//*[@id='div1']/table/tfoot/tr/td/p").Text
d = Split(a, " ")
adet = d(3) + 0
sayfa = Left(adet, 1)

Set table = x.FindElementByXPath("//*[@id='div1']/table").AsTable
x.Wait 2000
table.ToExcel Range("a5")
For i = 3 To sayfa
x.FindElementByXPath("//*[@id='div1']/table/tfoot/tr/td/div/div[1]/div/ul/li[" & i & "]/a").Click
x.Wait 2000
Set table = x.FindElementByXPath("//*[@id='div1']/table").AsTable
lrow = Cells.Find("*", , , , xlByRows, xlPrevious).Row + 1
table.ToExcel Range("A" & lrow)

Next


End Sub

Baya bir yol katettim fakat en son sayfada kod hata veriyor. Yardımcı olabilir misiniz acaba ?
 

askm

Destek Ekibi
Destek Ekibi
Katılım
4 Haziran 2005
Mesajlar
2,745
Excel Vers. ve Dili
2010-2016
Aşağıdaki şekilde deneyin.
Kod:
Sub test()
'https://www.excel.web.tr/threads/selenium-ile-tez-isimlerini-cekme.203260/
Dim x As New Selenium.WebDriver, table As TableElement
Dim a As String
Dim d As Variant
Dim adet As Integer
x.Start "Chrome"
x.Get "https://tez.yok.gov.tr/UlusalTezMerkezi/"
x.FindElementById("neden").SendKeys Range("a1")
x.FindElementByName("kaydet").Click
x.Wait 1500
'x.FindElementByXPath("//*[@id='searchMotor2']/form/table/tbody/tr/td/table/tbody/tr[2]/td[5]/input[3]").Click
a = x.FindElementByXPath("//*[@id='div1']/table/tfoot/tr/td/p").Text
d = Split(a, " ")
adet = d(3) + 0
x.FindElementByClass("dropdown-toggle").Click
x.Wait 250
x.FindElementByClass("dropdown-menu").FindElementsByTag("li")(4).Click
x.Wait 500
dongu = Round(adet / 100, 0)

For i = 1 To dongu
    son = Range("A" & Rows.Count).End(3).Row + 1
    Set tablo = x.FindElementsByTag("table")(2).AsTable
    tablo.ToExcel Cells(son, 1)
    son = Range("A" & Rows.Count).End(3).Row + 1
    Cells(son, 1).Select
    Set liler = x.FindElementByClass("pagination").FindElementsByTag("a")
    lisay = liler.Count
    For lis = 1 To lisay
        If InStr(liler(lis).Attribute("href"), "top4") > 0 Then
            liler(lis).Click
            x.Wait 500
        End If
    Next lis
Next i
Application.ScreenUpdating = False
For t = son To 3 Step -1
    If Cells(t, 4) = "" Or Cells(t, 4) = "Yıl" Then
        Rows(t).Delete
    End If
Next t
Application.ScreenUpdating = True
Rows(2).Font.Bold = True
MsgBox "İşlem tamam!", vbInformation, "UYARI!"
End Sub
 

ibere

Altın Üye
Katılım
31 Mart 2018
Mesajlar
129
Excel Vers. ve Dili
Office 365
Altın Üyelik Bitiş Tarihi
21-04-2027
Aşağıdaki şekilde deneyin.
Kod:
Sub test()
'https://www.excel.web.tr/threads/selenium-ile-tez-isimlerini-cekme.203260/
Dim x As New Selenium.WebDriver, table As TableElement
Dim a As String
Dim d As Variant
Dim adet As Integer
x.Start "Chrome"
x.Get "https://tez.yok.gov.tr/UlusalTezMerkezi/"
x.FindElementById("neden").SendKeys Range("a1")
x.FindElementByName("kaydet").Click
x.Wait 1500
'x.FindElementByXPath("//*[@id='searchMotor2']/form/table/tbody/tr/td/table/tbody/tr[2]/td[5]/input[3]").Click
a = x.FindElementByXPath("//*[@id='div1']/table/tfoot/tr/td/p").Text
d = Split(a, " ")
adet = d(3) + 0
x.FindElementByClass("dropdown-toggle").Click
x.Wait 250
x.FindElementByClass("dropdown-menu").FindElementsByTag("li")(4).Click
x.Wait 500
dongu = Round(adet / 100, 0)

For i = 1 To dongu
    son = Range("A" & Rows.Count).End(3).Row + 1
    Set tablo = x.FindElementsByTag("table")(2).AsTable
    tablo.ToExcel Cells(son, 1)
    son = Range("A" & Rows.Count).End(3).Row + 1
    Cells(son, 1).Select
    Set liler = x.FindElementByClass("pagination").FindElementsByTag("a")
    lisay = liler.Count
    For lis = 1 To lisay
        If InStr(liler(lis).Attribute("href"), "top4") > 0 Then
            liler(lis).Click
            x.Wait 500
        End If
    Next lis
Next i
Application.ScreenUpdating = False
For t = son To 3 Step -1
    If Cells(t, 4) = "" Or Cells(t, 4) = "Yıl" Then
        Rows(t).Delete
    End If
Next t
Application.ScreenUpdating = True
Rows(2).Font.Bold = True
MsgBox "İşlem tamam!", vbInformation, "UYARI!"
End Sub
Çok güzel çalışıyor, teşekkür ederim.
 

ibere

Altın Üye
Katılım
31 Mart 2018
Mesajlar
129
Excel Vers. ve Dili
Office 365
Altın Üyelik Bitiş Tarihi
21-04-2027
Aşağıdaki şekilde deneyin.
Kod:
Sub test()
'https://www.excel.web.tr/threads/selenium-ile-tez-isimlerini-cekme.203260/
Dim x As New Selenium.WebDriver, table As TableElement
Dim a As String
Dim d As Variant
Dim adet As Integer
x.Start "Chrome"
x.Get "https://tez.yok.gov.tr/UlusalTezMerkezi/"
x.FindElementById("neden").SendKeys Range("a1")
x.FindElementByName("kaydet").Click
x.Wait 1500
'x.FindElementByXPath("//*[@id='searchMotor2']/form/table/tbody/tr/td/table/tbody/tr[2]/td[5]/input[3]").Click
a = x.FindElementByXPath("//*[@id='div1']/table/tfoot/tr/td/p").Text
d = Split(a, " ")
adet = d(3) + 0
x.FindElementByClass("dropdown-toggle").Click
x.Wait 250
x.FindElementByClass("dropdown-menu").FindElementsByTag("li")(4).Click
x.Wait 500
dongu = Round(adet / 100, 0)

For i = 1 To dongu
    son = Range("A" & Rows.Count).End(3).Row + 1
    Set tablo = x.FindElementsByTag("table")(2).AsTable
    tablo.ToExcel Cells(son, 1)
    son = Range("A" & Rows.Count).End(3).Row + 1
    Cells(son, 1).Select
    Set liler = x.FindElementByClass("pagination").FindElementsByTag("a")
    lisay = liler.Count
    For lis = 1 To lisay
        If InStr(liler(lis).Attribute("href"), "top4") > 0 Then
            liler(lis).Click
            x.Wait 500
        End If
    Next lis
Next i
Application.ScreenUpdating = False
For t = son To 3 Step -1
    If Cells(t, 4) = "" Or Cells(t, 4) = "Yıl" Then
        Rows(t).Delete
    End If
Next t
Application.ScreenUpdating = True
Rows(2).Font.Bold = True
MsgBox "İşlem tamam!", vbInformation, "UYARI!"
End Sub
Set liler = x.FindElementByClass("pagination").FindElementsByTag("a")
lisay = liler.Count
For lis = 1 To lisay
If InStr(liler(lis).Attribute("href"), "top4") > 0 Then
liler(lis).Click
x.Wait 500
End If
Next lis

Bu kısmı anlamadım, ne yapmaya çalışıyor acaba ?
 
Üst