Selenium Web_Driver ile Google Maps Veri Çekme İşlemi

Katılım
10 Ocak 2016
Mesajlar
36
Excel Vers. ve Dili
Office 2019
Altın Üyelik Bitiş Tarihi
06-05-2021
Arkadaşlar MErhaba,

Aşağıda sizlere Google Maps üzerinden aramasını istediğiniz yerlerin veri çekme işlemi ile ilgili kodum mevcut. Burada sorunum aranan veride ki 7. satırda ki path doğru olduğu hata veriyor ben bu konuda tıkandığım için sizlerin yardımına ihtiyacım var.

Bu konuda destek gösteren göstermeyen tüm arkadaşlarımıza çok teşekkür ediyorum.

Kod:
Sub Google_Maps()
Dim baglan As New Selenium.WebDriver


i = 5 'Burada satırı sabitlemek için
sayi = 0

'--------&& Bağlantı Yollarını Tanımlıyoruz &&-------------
  baglan.Start "chrome"
  baglan.Get "https://www.google.com.tr/maps?q="
'---------------------------------------------------------

baglan.FindElementById("searchboxinput").SendKeys Sheets("Google Map Tarayıcı").Range("C3")  'Excel arama kutucuğunu belirtiyoruz.
baglan.Wait 5000  '5 sn bekliyoruz.

baglan.FindElementById("searchbox-searchbutton").Click   'Arama yapma butonuna tıklıyoruz.
baglan.Wait 8000  '8 sn bekliyoruz.

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

For x = 1 To 20 Step 2

baglan.FindElementByXPath("//*[@id='pane']/div/div[1]/div/div/div[4]/div[1]/div[" & x & "]/div/a").Click
baglan.Wait 5000  '5 sn bekliyoruz.

    If i < 26 Then  'Burada ilk sıraya göre verinin gelmesini sağlamak.
    i = i + 1

    If sayi < 26 Then  'Burada sıra numarasını saydırıyoruz.
    sayi = sayi + 1

        Cells(i, 1).Value = sayi
        
        Cells(i, 2).Value = baglan.FindElementByXPath("//*[@id='pane']/div/div[1]/div/div/div[2]/div[1]/div[1]/div[1]/h1").Text 'İsim
        Cells(i, 3).Value = baglan.FindElementByXPath("//*[@id='pane']/div/div[1]/div/div/div[7]/div[1]/button/div[1]/div[2]").Text 'Adres
        Cells(i, 6).Value = baglan.FindElementByXPath("//*[@id='pane']/div/div[1]/div/div/div[7]/div[4]/button/div[1]/div[2]/div[1]").Text 'Telefon No
        Cells(i, 7).Value = baglan.FindElementByXPath("//*[@id='pane']/div/div[1]/div/div/div[7]/div[3]/button").Text 'Web Sitesi
        Cells(i, 8).Value = baglan.FindElementByXPath("//*[@id='pane']/div/div[1]/div/div/div[2]/div[1]/div[1]/div[2]/div/div[2]/span[1]/span[1]/button").Text 'Lokasyon Bilgisi
        Cells(i, 9).Value = baglan.FindElementByXPath("//*[@id='pane']/div/div[1]/div/div/div[7]/div[2]/div[1]/div/div[1]/span[1]/span[2]").Text 'Lokasyon Durumu

    baglan.Wait 3000  '3 sn bekliyoruz.
    baglan.FindElementByXPath("//*[@id='omnibox-singlebox']/div[1]/div[3]/div/div[1]/div/div/button/span").Click  'Sonuca geri dön
    baglan.Wait 1000  '1 sn bekliyoruz.

    End If
    
End If
Next x

baglan.Wait 5000  '5 sn bekliyoruz

    
'Stop
End Sub

Hata Mesajına ait görseli görmek isteyen arkadaşlarımız için; Google Drive Linkini paylaşıyorum.

Link; https://drive.google.com/file/d/1xkUk2_d0vvE2UAPIqPLH-bru5bNYcN7z/view?usp=sharing
 
Katılım
5 Ocak 2020
Mesajlar
73
Excel Vers. ve Dili
2007
Altın Üyelik Bitiş Tarihi
22-02-2023
Dosya ekleyebilirseniz yardımcı olmaya çalışırım.
 
Katılım
5 Ocak 2020
Mesajlar
73
Excel Vers. ve Dili
2007
Altın Üyelik Bitiş Tarihi
22-02-2023
Merhaba uygun bir zamanda inceleyip size dönüş yapacağım.
Sanıyorum kodları yeniden düzenlemek gerekiyor çünkü başka bir arama yapınca adresler değiştiği için yazılan kodlar çalışmıyor.
 

askm

Destek Ekibi
Destek Ekibi
Katılım
4 Haziran 2005
Mesajlar
2,745
Excel Vers. ve Dili
2010-2016
Çalışmanızda amaç ilk 20 aramayı mı almak yoksa sonraki sayfalardan da veri çekilecek mi?
 
Katılım
10 Ocak 2016
Mesajlar
36
Excel Vers. ve Dili
Office 2019
Altın Üyelik Bitiş Tarihi
06-05-2021
Merhaba uygun bir zamanda inceleyip size dönüş yapacağım.
Sanıyorum kodları yeniden düzenlemek gerekiyor çünkü başka bir arama yapınca adresler değiştiği için yazılan kodlar çalışmıyor.
Yunus Bey,

Şimdiden ilginiz için ve ayıracağınız zaman için çok teşekkür ederim.
 
Katılım
10 Ocak 2016
Mesajlar
36
Excel Vers. ve Dili
Office 2019
Altın Üyelik Bitiş Tarihi
06-05-2021
Çalışmanızda amaç ilk 20 aramayı mı almak yoksa sonraki sayfalardan da veri çekilecek mi?
Merhaba Efendim,

Yaptığım çalışmada aranan tüm sayfalarda ki verileri çekmesi gerekiyor. Sadece ilk 20'yi baz almaması lazım, diğer sayfalardaki verileri de almak istiyorum.
 

askm

Destek Ekibi
Destek Ekibi
Katılım
4 Haziran 2005
Mesajlar
2,745
Excel Vers. ve Dili
2010-2016
Kodunuz sanki ilk 20 için yazılmış gibi. ( For x = 1 To 20 Step 2)
 

askm

Destek Ekibi
Destek Ekibi
Katılım
4 Haziran 2005
Mesajlar
2,745
Excel Vers. ve Dili
2010-2016
Sayfanın kod kısmını incelemek gerek yalnız gördüğüm kadarıyla kaç tane bulunduğu yazmıyor. bu yüzden bu döngü dışına örneğin 100 veri çekmek için 5 kere daha döngü yapmak ve alttaki ileri butonuna tıklamak gerekir. Yani sizin kodların dışında bir döngü olması gerekir. Sizin döngü (20 veri aldıktan sonra) ileri butonuna tıklaması gerekli.
 
Katılım
10 Ocak 2016
Mesajlar
36
Excel Vers. ve Dili
Office 2019
Altın Üyelik Bitiş Tarihi
06-05-2021
Paylaştığım exceli indirip inceleme fırsatınız oldu mu ? Yaptığım kod içerisinde google mapsteki 8'nci veriye geldiğinde path doğru olduğu halde hata veriyor bunun nedenini çözemedim ben zaten aksi takdirde kodum ilk 7 satırlık veriyi sorunsuz bir şekilde getiriyor
 

askm

Destek Ekibi
Destek Ekibi
Katılım
4 Haziran 2005
Mesajlar
2,745
Excel Vers. ve Dili
2010-2016
Döngünün başında Debug.Print baglan.FindElementsByClass("EgL07d").Count çalıştırdığınız zaman 14 çıkıyor. Bu Sayfada gözüken Web sitesi ve Yol tarifi butonlarının sayısı. Yani sayfada 14/2=7 adet satır gözüküyor. 7. veriden sonra sayfa kaydırmanız gerekir.
 
Katılım
10 Ocak 2016
Mesajlar
36
Excel Vers. ve Dili
Office 2019
Altın Üyelik Bitiş Tarihi
06-05-2021
Döngünün başında Debug.Print baglan.FindElementsByClass("EgL07d").Count çalıştırdığınız zaman 14 çıkıyor. Bu Sayfada gözüken Web sitesi ve Yol tarifi butonlarının sayısı. Yani sayfada 14/2=7 adet satır gözüküyor. 7. veriden sonra sayfa kaydırmanız gerekir.
Ben burada tam ne demek istediğinizi anlayamadım. Rica etsem bunu kodlama örneği ile gösterebilir misiniz ?
 
Katılım
5 Ocak 2020
Mesajlar
73
Excel Vers. ve Dili
2007
Altın Üyelik Bitiş Tarihi
22-02-2023
Merhaba. biraz deneme yaptım ve her defasında problem çıktı ve sayfada 20 veri varken en fazla 10 veriyi alıyor. xpath, a etiketi gibi değişik yöntemleri denedim olmadı.
Size tavsiyem aşağıdaki verdiğim linklerdeki videoları izleyin, bu eklentileri deneyin işinize yarayacaktır.
Özellikle İnstand data scraper benimde kullandığım başarılı bir eklentidir ve işinizi görecektir.


 

Haluk

Özel Üye
Katılım
7 Temmuz 2004
Mesajlar
12,406
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Altın Üyelik Bitiş Tarihi
Alternatif olarak, Google'ın bu işler için yapılmış API'si kullanılabilir.....



.
 
Üst