• DİKKAT

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

Google sheets veya Selenium üzerinden siteden veri çekme

onder_09

Altın Üye
Katılım
17 Mart 2017
Mesajlar
211
Excel Vers. ve Dili
2016 türkçe
Herkese merhaba "https://www.aydemperakende.com.tr/borc-sorgula" bu siteden borçlarını çekmek istiyorum. İster online ister masaüstü excel hiç farketmez bu konuda bilgisi olan hocalarım yardımcı olursa çok memnun olurum.

Örnek abone numarası ; 800005547821 elimde 40'dan fazla abone numarası var hepsini tek tuşla sorgulatıp borçlarını yan yana sütunlarda yazmasını istiyorum.
 
239093

Kod:
Sub test()
Dim x As New Selenium.WebDriver
x.Start "Chrome"
rw = Range("A1").End(xlDown).Row
For i = 2 To rw
x.Get "https://www.aydemperakende.com.tr/borc-sorgula"
x.FindElementByName("contract").Clear
x.FindElementByName("contract").SendKeys Range("A" & i)
x.FindElementByXPath("//*[@id='button1']").Click
Range("b" & i) = x.FindElementByXPath("/html/body/main/div[2]/div[1]/div[3]/div/div/table/tbody/tr[2]/td[3]").Text
Range("c" & i) = x.FindElementByXPath("/html/body/main/div[2]/div[1]/div[3]/div/div/table/tbody/tr[2]/td[4]").Text
Next
End Sub

Selenium ile kullanabilirsin.
 
Ekli dosyayı görüntüle 239093

Kod:
Sub test()
Dim x As New Selenium.WebDriver
x.Start "Chrome"
rw = Range("A1").End(xlDown).Row
For i = 2 To rw
x.Get "https://www.aydemperakende.com.tr/borc-sorgula"
x.FindElementByName("contract").Clear
x.FindElementByName("contract").SendKeys Range("A" & i)
x.FindElementByXPath("//*[@id='button1']").Click
Range("b" & i) = x.FindElementByXPath("/html/body/main/div[2]/div[1]/div[3]/div/div/table/tbody/tr[2]/td[3]").Text
Range("c" & i) = x.FindElementByXPath("/html/body/main/div[2]/div[1]/div[3]/div/div/table/tbody/tr[2]/td[4]").Text
Next
End Sub

Selenium ile kullanabilirsin.

Hocam merhaba anca bakıp dönüş yapabildim kusura bakmayın kontrol ettiğimde maalesef ilk abone numarasını yapıp daha sonra program kapanıyor.
 
Döngüde araya gecikme koymalısınız diye düşünüyorum.
 
s.a.

Aşağıdaki şekilde dener misiniz.
Kod:
Sub test()
On Error Resume Next
Dim x As New Selenium.WebDriver
x.Start "Chrome"
rw = Range("A2").End(xlDown).Row
For i = 2 To rw
If IsEmpty(rw) = True Then
    Exit Sub
Else
x.Get "https://www.aydemperakende.com.tr/borc-sorgula"
x.Wait 1000
x.FindElementByName("contract").Clear
x.Wait 1000
x.FindElementByName("contract").SendKeys Range("A" & i)
x.Wait 1000
x.FindElementByXPath("//*[@id='button1']").Click
x.Wait 1000
Range("b" & i) = x.FindElementByXPath("/html/body/main/div[2]/div[1]/div[3]/div/div/table/tbody/tr[2]/td[3]").Text
x.Wait 1000
Range("c" & i) = x.FindElementByXPath("/html/body/main/div[2]/div[1]/div[3]/div/div/table/tbody/tr[2]/td[4]").Text
x.Wait 1000
End If
Next
End Sub
 
s.a.

Aşağıdaki şekilde dener misiniz.
Kod:
Sub test()
On Error Resume Next
Dim x As New Selenium.WebDriver
x.Start "Chrome"
rw = Range("A2").End(xlDown).Row
For i = 2 To rw
If IsEmpty(rw) = True Then
    Exit Sub
Else
x.Get "https://www.aydemperakende.com.tr/borc-sorgula"
x.Wait 1000
x.FindElementByName("contract").Clear
x.Wait 1000
x.FindElementByName("contract").SendKeys Range("A" & i)
x.Wait 1000
x.FindElementByXPath("//*[@id='button1']").Click
x.Wait 1000
Range("b" & i) = x.FindElementByXPath("/html/body/main/div[2]/div[1]/div[3]/div/div/table/tbody/tr[2]/td[3]").Text
x.Wait 1000
Range("c" & i) = x.FindElementByXPath("/html/body/main/div[2]/div[1]/div[3]/div/div/table/tbody/tr[2]/td[4]").Text
x.Wait 1000
End If
Next
End Sub

Tekrardan Merhaba evet bu sefer çalışıyor ama bazı aboneliklerin (örn:800001195615) 2 adet borcu var ama program tek borcu yazıyor buraya. Sadece 1.hücrede abone numarası olmasına rağmen diğer hücrelerde de abone numarası varmış gibi görüp sorgulama yapmaya çalışıyor. Son ödeme tarihine gerek yok yazmasada olur.

Eğer olabiliyorsa A2 Sütununa apartman adı B2 Sütununa 1.borç C2 sütununa 2. borç yazdırabilirsek mükemmel olur. Gerçi ben istiyorumda olur mu olabiletesi var mı bilemedim şimdiden emeğiniz için her şey için çok teşekkürler
 
C# ile daha basit yapılır. yalnız bana birden fazla borcu olan abone numarası yollayın onun bilgileri üzerinden bakayım.
 
s.a.

bu şekilde dener misiniz. İki borç alt atta değil de yan yana oluyor.
Kod:
Sub test()
On Error Resume Next
Dim x As New Selenium.WebDriver
x.Start "Chrome"
rw = Range("A2").End(xlDown).Row
wr = Range("B2").End(xlUp).Row
wra = Range("B2").End(xlUp).Row
wra = Empty
For i = 2 To rw
x.Wait 1000
x.Get "https://www.aydemperakende.com.tr/borc-sorgula"
x.Wait 500
x.FindElementByName("contract").Clear
x.Wait 500
x.FindElementByName("contract").SendKeys Range("A" & i)
x.Wait 500
x.FindElementByXPath("//*[@id='button1']").Click
x.Wait 500
Range("b" & i) = x.FindElementByXPath("/html/body/main/div[2]/div[1]/div[3]/div/div/table/tbody/tr[2]/td[3]").Text
x.Wait 500
Range("d" & i) = x.FindElementByXPath("/html/body/main/div[2]/div[1]/div[3]/div/div/table/tbody/tr[3]/td[3]").Text
x.Wait 500
Range("c" & i) = x.FindElementByXPath("/html/body/main/div[2]/div[1]/div[3]/div/div/table/tbody/tr[2]/td[4]").Text
x.Wait 500
Range("e" & i) = x.FindElementByXPath("/html/body/main/div[2]/div[1]/div[3]/div/div/table/tbody/tr[3]/td[4]").Text
Next
End Sub
 
s.a.

bu şekilde dener misiniz. İki borç alt atta değil de yan yana oluyor.
Kod:
Sub test()
On Error Resume Next
Dim x As New Selenium.WebDriver
x.Start "Chrome"
rw = Range("A2").End(xlDown).Row
wr = Range("B2").End(xlUp).Row
wra = Range("B2").End(xlUp).Row
wra = Empty
For i = 2 To rw
x.Wait 1000
x.Get "https://www.aydemperakende.com.tr/borc-sorgula"
x.Wait 500
x.FindElementByName("contract").Clear
x.Wait 500
x.FindElementByName("contract").SendKeys Range("A" & i)
x.Wait 500
x.FindElementByXPath("//*[@id='button1']").Click
x.Wait 500
Range("b" & i) = x.FindElementByXPath("/html/body/main/div[2]/div[1]/div[3]/div/div/table/tbody/tr[2]/td[3]").Text
x.Wait 500
Range("d" & i) = x.FindElementByXPath("/html/body/main/div[2]/div[1]/div[3]/div/div/table/tbody/tr[3]/td[3]").Text
x.Wait 500
Range("c" & i) = x.FindElementByXPath("/html/body/main/div[2]/div[1]/div[3]/div/div/table/tbody/tr[2]/td[4]").Text
x.Wait 500
Range("e" & i) = x.FindElementByXPath("/html/body/main/div[2]/div[1]/div[3]/div/div/table/tbody/tr[3]/td[4]").Text
Next
End Sub

Hocam Merhaba ellerinize sağlık kod çalışıyor fakat 2 adet revize yapmamız mümkün mü acaba ?

1-A2 Hücresine apartman adlarını yazmak istiyorum B2 hücresinde abone numaları yazmak istiyorum.
2-Son ödeme tarihlerini iptal etmemiz mümkün mü ? A2'de apartman adı B2'de Abone numaraları C2'de 1.Borç yazsın D2'de 2.borç yazsın istiyorum.
 
C# ile daha basit yapılır. yalnız bana birden fazla borcu olan abone numarası yollayın onun bilgileri üzerinden bakayım.

Bütün abone numaraları burada hocam en baştaki abone numarasında 2 adet borç var. En fazla 2 adet borç oluyor 2'den fazla borç olmuyor.
 

Ekli dosyalar

Bütün abone numaraları burada hocam en baştaki abone numarasında 2 adet borç var. En fazla 2 adet borç oluyor 2'den fazla borç olmuyor.
Hocam program bir üst mesajda. excel aç dediğinizde açılan excel dosyasındaki başlık isimlerini değiştirmeyin. yeni sütün ekleyip yeni başlık ekleyebilirsiniz. ancak benim verdiğim başlık isimlerini bozmayın. birde programdaki tabloya sağ tıkladığınızda verileri excele aktarma modülü de ekledim.
 
Geri
Üst