web sitesinden veri çekme

Katılım
3 Temmuz 2009
Mesajlar
10
Excel Vers. ve Dili
2002 10 ver
merhaba aşağıdaki kod satırları ile migros sitesindeki atıştırmalık kategorisi altındaki açılan 1 sayfadaki tüm ürünlerin adını çekip o ürüne tıklayıp besin değerini seçip devamını okuya tıklayıp gelen verileri excele aktarmaya çalışıyorum besin değerini seçme sırasında sayfayı elimle aşağı kaydırmazsam besin değerine tıklayamıyorum o kısmı geçince tekrar atıştırmalıklara geri dönüyorum for each döngü 2. ürüne geldiğinde hata veriyor sebebini ne yaptıysam bulamadım lütfen yardım edin...


url adresi excel a3 hücresi için : https://www.migros.com.tr/atistirmalik-c-113fb

Sub sele()

Dim w As New Selenium.WebDriver
Dim k, sonsatır As Integer
Dim url As String

Dim a As Selenium.WebElements
sonsatır = Range("A10000").End(xlUp).Row
sat = 2
w.Start "Chrome"
w.Wait 2000
For k = 3 To sonsatır
url = Range("A" & k)
w.Get url
w.Wait 4000

w.FindElementByCss("body > sm-root > div > fe-product-cookie-indicator > div > div > button.mat-caption.btn.accept-all.ng-tns-c158-0").Click


Set urunler = w.FindElementsByCss(".mat-mdc-card.mdc-card")


For Each urun In urunler


sat = sat + 1

Debug.Print urun.FindElementByCss(".mat-caption.text-color-black.product-name").Text

Cells(sat, 3) = urun.FindElementByCss(".mat-caption.text-color-black.product-name").Text

w.FindElementByCss(".image").Click

w.Wait 3000

w.FindElementByCss("#mat-tab-label-0-1").Click

w.Wait 3000

w.FindElementByCss("#mat-tab-content-0-1 > div > div > fe-read-more > div > span").Click

Cells(sat, 7) = w.FindElementByCss(".mdc-data-table__content").Text


w.FindElementByCss("body > sm-root > div > main > sm-product > article > sm-product-detail-page > div.product-detail-page.ng-star-inserted > fe-mobile-breadcrumb > div > a > fa-icon > svg").Click


Next urun



Next

End Sub
 

askm

Destek Ekibi
Destek Ekibi
Katılım
4 Haziran 2005
Mesajlar
2,745
Excel Vers. ve Dili
2010-2016
Aşağıdaki kodlar ile deneyin. Olmadı ise örnek excell dosyanız ile yapmak istediğinizi daha açık yazın yardımcı olmaya çalışayım.
Kod:
Sub sele()
Dim w As New Selenium.WebDriver
Dim k, sonsatır As Integer
Dim url As String
On Error Resume Next
Dim a As Selenium.WebElements
sonsatır = Range("A10000").End(xlUp).Row
sat = 2
w.Start "Chrome"
w.Window.Maximize

w.Wait 2000
For k = 3 To sonsatır
    url = Range("A" & k)
    w.Get url
    w.Wait 4000
    w.FindElementByCss("body > sm-root > div > fe-product-cookie-indicator > div > div > button.mat-caption.btn.accept-all.ng-tns-c158-0").Click
    
    Set urunler = w.FindElementsByCss(".mat-mdc-card.mdc-card")
    
    For Each urun In urunler
        sat = sat + 1
        Debug.Print urun.FindElementByCss(".mat-caption.text-color-black.product-name").Text
        Cells(sat, 3) = urun.FindElementByCss(".mat-caption.text-color-black.product-name").Text
        w.FindElementByCss(".image").Click
        w.Wait 3000
        w.FindElementsByClass("mat-tab-label-content")(2).Click
        w.Wait 3000
    '    w.FindElementByCss("#mat-tab-content-0-1 > div > div > fe-read-more > div > span").Click
        w.FindElementsByClass("cdk-table")(2).AsTable.ToExcel Cells(sat, 7)
        w.FindElementsByClass("breadcrumbs__link")(2).Click
    Next urun
Next

End Sub
 
Katılım
3 Temmuz 2009
Mesajlar
10
Excel Vers. ve Dili
2002 10 ver
Aşağıdaki kodlar ile deneyin. Olmadı ise örnek excell dosyanız ile yapmak istediğinizi daha açık yazın yardımcı olmaya çalışayım.
Kod:
Sub sele()
Dim w As New Selenium.WebDriver
Dim k, sonsatır As Integer
Dim url As String
On Error Resume Next
Dim a As Selenium.WebElements
sonsatır = Range("A10000").End(xlUp).Row
sat = 2
w.Start "Chrome"
w.Window.Maximize

w.Wait 2000
For k = 3 To sonsatır
    url = Range("A" & k)
    w.Get url
    w.Wait 4000
    w.FindElementByCss("body > sm-root > div > fe-product-cookie-indicator > div > div > button.mat-caption.btn.accept-all.ng-tns-c158-0").Click
   
    Set urunler = w.FindElementsByCss(".mat-mdc-card.mdc-card")
   
    For Each urun In urunler
        sat = sat + 1
        Debug.Print urun.FindElementByCss(".mat-caption.text-color-black.product-name").Text
        Cells(sat, 3) = urun.FindElementByCss(".mat-caption.text-color-black.product-name").Text
        w.FindElementByCss(".image").Click
        w.Wait 3000
        w.FindElementsByClass("mat-tab-label-content")(2).Click
        w.Wait 3000
    '    w.FindElementByCss("#mat-tab-content-0-1 > div > div > fe-read-more > div > span").Click
        w.FindElementsByClass("cdk-table")(2).AsTable.ToExcel Cells(sat, 7)


        w.FindElementsByClass("breadcrumbs__link")(2).Click


    Next urun
Next

End Sub

merhaba kodda yapmış olduğunuz değişiklik için teşekkür ediyorum for each döngüsü Ülker Napoliten 33 G ye ait bilgileri tabloya excele yazdıktan sonra "w.FindElementsByClass("cdk-table")(2).AsTable.ToExcel Cells(sat, 7)" kategorilere geri dönüş yapmıyor "w.FindElementsByClass("breadcrumbs__link")(2).Click" ve next urun yaptığında 2. ürün kategorilerdeki 2. ürün değil ürün sıralamasının aşağıdaki gibi olması gerekiyor her ürüne bir kere gelecek içindeki besin değerlerine tıklayacak altındaki tabloyu excele yazacak daha sonra kategorilere geri dönecek Ülker Bol Sütlü Kare Çikolata 60 G tıklayacak besin değerine tıklayacak v.b döngü her ürün için devam edecek sonuna kadar ama bizde bu şekilde olmuyor ilk ürün Ülker Napoliten 33 G tekrar açılıyor yardımlarınızı bekliyorum saygılarımla...

Ülker Napoliten 33 G
Ülker Bol Sütlü Kare Çikolata 60 G
Kinder Chocolate 4'lü 50 G
Ülker Bitter Kare Çikolata %80 Kakaolu 60 G
Ozmo Fun Figürlü Çikolata 23 G
Nestle Classic Sütlü Kare Çikolata 60 G
Milka Çilekli Yoğurtlu Çikolata 100 G
Milka Bonibon 3'lü Paket 72.9 G
Ülker Bitter Kare Çikolata %60 Kakaolu 60 G
Nestle Classic Bitter Kare Çikolata 60 G
Çokokrem Tüp 40 G
Ülker Bütün Antep Fıstıklı Sütlü Kare Çikolata 65G
Milka Milkinis 87,5 G
Eti Petito Mini Çekmeceli Bol Sütlü Çikolata 32 g
Albeni Tane Tane Bisküvi 40 G
Tadelle Sütlü Çikolata 52 G
Milka Fındıklı Çikolata 80 G
Toblerone Sütlü Çikolata 100 G
Kinder Joy T1 Kızlara Özel 20 G
Kinder Joy T1 Erkeklere Özel 20 G
Milka Oreolu Çikolata 100 G
Milka Çikolata Rüyası 100 G
Torku Miniki Sütlü Çikolata 72 G
Tadelle Fındık Dolgulu Sütlü Çikolata 30 G
Milka Üzümlü Fındıklı Çikolata 80 G
Petito Patim Bol Sütlü Çikolata 18 g
Caramio Karamelli Kare Çikolata 55 G
Eti Karam %70 Kakaolu Bitter Çikolata 60 G
Godiva %72 Bitter Çikolata Kare 60 G
Milka Oreo Sandwich Kakaolu Bisküvili Çikolata 92 G
 

askm

Destek Ekibi
Destek Ekibi
Katılım
4 Haziran 2005
Mesajlar
2,745
Excel Vers. ve Dili
2010-2016
Aşağıdaki şekilde mi?
Kod:
Sub selenium_Migros()
Dim askm As New Selenium.WebDriver
Dim k, sonsatır As Integer
Dim url As String
On Error Resume Next
Dim a As Selenium.WebElements
sonsatır = Range("A10000").End(xlUp).Row
sat = 2
askm.Start "Chrome"
askm.Window.Maximize
deger = 1
askm.Wait 2000
For k = 3 To sonsatır
    url = Range("A" & k)
    askm.Get url
    askm.Wait 4000
    askm.FindElementByCss("body > sm-root > div > fe-product-cookie-indicator > div > div > button.mat-caption.btn.accept-all.ng-tns-c158-0").Click
    
    Set urunler = askm.FindElementByClass("product-cards").FindElementsByCss(".mat-mdc-card.mdc-card")
    say = urunler.Count
    For Each urun In urunler
'        Debug.Print askm.FindElementsByClass("product-name")(deger).Text
        Cells(sat, 3) = askm.FindElementsByClass("product-name")(deger).Text
        askm.FindElementsByClass("image")(deger).Click
        askm.Wait 3000
        askm.FindElementsByClass("mat-tab-label-content")(2).Click
        askm.Wait 3000
    
        For Each ele In askm.FindElementsByClass("cdk-table")(2).FindElementsByTag("tr")
            Cells(sat, 4).Value = ele.FindElementsByTag("td")(1).Text
            Cells(sat, 5).Value = ele.FindElementsByTag("td")(2).Text
            sat = sat + 1
        Next
        askm.Get url
        askm.Wait 3000
        deger = deger + 1
    Next urun
Next
MsgBox "İşlem tamam", vbInformation, "UYARI!"
End Sub
 
Katılım
3 Temmuz 2009
Mesajlar
10
Excel Vers. ve Dili
2002 10 ver
Aşağıdaki şekilde mi?
Kod:
Sub selenium_Migros()
Dim askm As New Selenium.WebDriver
Dim k, sonsatır As Integer
Dim url As String
On Error Resume Next
Dim a As Selenium.WebElements
sonsatır = Range("A10000").End(xlUp).Row
sat = 2
askm.Start "Chrome"
askm.Window.Maximize
deger = 1
askm.Wait 2000
For k = 3 To sonsatır
    url = Range("A" & k)
    askm.Get url
    askm.Wait 4000
    askm.FindElementByCss("body > sm-root > div > fe-product-cookie-indicator > div > div > button.mat-caption.btn.accept-all.ng-tns-c158-0").Click
   
    Set urunler = askm.FindElementByClass("product-cards").FindElementsByCss(".mat-mdc-card.mdc-card")
    say = urunler.Count
    For Each urun In urunler
'        Debug.Print askm.FindElementsByClass("product-name")(deger).Text
        Cells(sat, 3) = askm.FindElementsByClass("product-name")(deger).Text
        askm.FindElementsByClass("image")(deger).Click
        askm.Wait 3000
        askm.FindElementsByClass("mat-tab-label-content")(2).Click
        askm.Wait 3000
   
        For Each ele In askm.FindElementsByClass("cdk-table")(2).FindElementsByTag("tr")
            Cells(sat, 4).Value = ele.FindElementsByTag("td")(1).Text
            Cells(sat, 5).Value = ele.FindElementsByTag("td")(2).Text
            sat = sat + 1
        Next
        askm.Get url
        askm.Wait 3000
        deger = deger + 1
    Next urun
Next
MsgBox "İşlem tamam", vbInformation, "UYARI!"
End Sub

yaaaa sen ne büyük adamsın 2 haftadır şunu yapmaya çalışıyorum olmadı çooook teşekkür ederim emeğine sağlık "hayırlı kandiller dilerim"
 

askm

Destek Ekibi
Destek Ekibi
Katılım
4 Haziran 2005
Mesajlar
2,745
Excel Vers. ve Dili
2010-2016
Hayırlı kandiller.
 
Üst