• 04-01-2021, 17:01:26
    #1
    Herkese merhaba. Python'da çok yeniyim ve Selenium ile kendi çapımda bir bot yapmaya çalışıyorum.

    Buradaki sorun şu ki bu işlemleri döngüye sokamıyorum for, while döngüleri ile denedim ama bir türlü yapamadım.

    Var mı yardımcı olabilecek biri ?


    from selenium.webdriver.common.action_chains import ActionChains
    from time import sleep
    from selenium import webdriver
    from selenium.webdriver.chrome.options import Options
    import random
    driver = webdriver.Chrome(chrome_options=option, executable_path='C:/Python39/chromedriver.exe')
    
    # Linke Gi
    r
    driver.get('https://domain.com')
    sleep(2)
    
    # Yeni Sekme Aç
    driver.execute_script("window.open('','_blank');")
    driver.switch_to.window(driver.window_handles[-1])
    
    # Linke Gir
    driver.get('https://domain.com')
    
    # Tıkla
    actions: ActionChains = ActionChains(driver)
    actions.move_by_offset(300, 500).double_click().perform()
    
    # Bekle
    sleepTimes = [12.1, 12.5, 13.0, 13.4, 13.8, 14.0, 14.4, 14.8, 15.0, 15.4, 15.8]
    sleep(random.choice(sleepTimes))
    
    # Çık
    driver.quit()
  • 04-01-2021, 17:06:50
    #2
    Tam olarak ne yapmaya çalışıyordunuz? Biraz daha açıklama verebilrseniz destek olabilirim.
  • 04-01-2021, 17:18:09
    #3
    undercontr adlı üyeden alıntı: mesajı görüntüle
    Tam olarak ne yapmaya çalışıyordunuz? Biraz daha açıklama verebilrseniz destek olabilirim.
    En son tarayıcı kapanınca tekrar açılıp baştan başlasın istiyorum diyebiliriz hocam
  • 04-01-2021, 17:18:54
    #4
    kenan3507 adlı üyeden alıntı: mesajı görüntüle
    Herkese merhaba. Python'da çok yeniyim ve Selenium ile kendi çapımda bir bot yapmaya çalışıyorum.

    Buradaki sorun şu ki bu işlemleri döngüye sokamıyorum for, while döngüleri ile denedim ama bir türlü yapamadım.

    Var mı yardımcı olabilecek biri ?


    from selenium.webdriver.common.action_chains import ActionChains
    from time import sleep
    from selenium import webdriver
    from selenium.webdriver.chrome.options import Options
    import random
    driver = webdriver.Chrome(chrome_options=option, executable_path='C:/Python39/chromedriver.exe')
    
    # Linke Gi
    r
    driver.get('https://domain.com')
    sleep(2)
    
    # Yeni Sekme Aç
    driver.execute_script("window.open('','_blank');")
    driver.switch_to.window(driver.window_handles[-1])
    
    # Linke Gir
    driver.get('https://domain.com')
    
    # Tıkla
    actions: ActionChains = ActionChains(driver)
    actions.move_by_offset(300, 500).double_click().perform()
    
    # Bekle
    sleepTimes = [12.1, 12.5, 13.0, 13.4, 13.8, 14.0, 14.4, 14.8, 15.0, 15.4, 15.8]
    sleep(random.choice(sleepTimes))
    
    # Çık
    driver.quit()
    Şimdi gördüğüm birşeyi söyleyeyim. driver.quit() yaparsanız for döngüsünde olsa bile chrome komple kapanır. Siz yeni sekme açarak devam etmek istiyorsunuz.

    driver değişkenini tanımladıktan sonra driver.get() ile for döngüsünü açıp driver.quit() fonksiyonundan önce döngüyü bitirebilirsiniz. Yeterki driver.get() ve tüm işlemler döngünün içinde olsun. Örnek kod:

    driver = webdriver.Chrome()
    
    for i in url_listesi:
        driver.get(i)
        ... ve diğer tüm işlemler
    
    # for döngüsü bitti
    
    driver.quit()
  • 04-01-2021, 17:38:13
    #5
    undercontr adlı üyeden alıntı: mesajı görüntüle
    Şimdi gördüğüm birşeyi söyleyeyim. driver.quit() yaparsanız for döngüsünde olsa bile chrome komple kapanır. Siz yeni sekme açarak devam etmek istiyorsunuz.

    driver değişkenini tanımladıktan sonra driver.get() ile for döngüsünü açıp driver.quit() fonksiyonundan önce döngüyü bitirebilirsiniz. Yeterki driver.get() ve tüm işlemler döngünün içinde olsun. Örnek kod:

    driver = webdriver.Chrome()
    
    for i in url_listesi:
        driver.get(i)
        ... ve diğer tüm işlemler
    
    # for döngüsü bitti
    
    driver.quit()

    Hocam verdiğiniz kodlarla şöyle birşey denedim ama düzgün çalıştıramadım. Aslında benim istediğim şey tam olarak yeni sekmeden devam etmek değil de komple tarayıcıyı kapatıp tekrar sıfırdan tarayıcı açmak. Bu altta da bazı hatalar yaptım farkındayım da tam kestiremedim

    
    driver = webdriver.Chrome(chrome_options=option, executable_path='C:/Python39/chromedriver.exe')
    
    url_listesi = "https://domain.com"
    for i in url_listesi:
    
        driver.get(i)
    
    driver.get('https://domain.com')
    
    sleep(2)
    
    driver.execute_script("window.open('','_blank');")
    
    # Yeni Sekme, window_handles'daki son nesne olur
    driver.switch_to.window(driver.window_handles[-1])
    
    driver.get('https://domain.com')
    
    # Konum odaklı ilk tıklama**********************************************
    
    actions: ActionChains = ActionChains(driver)
    actions.move_by_offset(300, 500).double_click().perform()
    
    sleepTimes = [12.1, 12.5, 13.0, 13.4, 13.8, 14.0, 14.4, 14.8, 15.0, 15.4, 15.8]
    sleep(random.choice(sleepTimes))
    
    
    driver.quit()
  • 04-01-2021, 17:59:56
    #6
    Ben hataları tek tek söyliyeyim size açıklayarak.

    Aşağıda söylediklerim sizin farklı farklı URLleri for döngüsü içerisinde kullanmak istediğinizi varsayarak yazıyorum.
    • Öncelikle sizin bir URL listeniz olması lazım ki for döngünüz olabilsin, Chrome size her yeniden açıldığında yeni bir sayfa göstersin.
    • Bu URL listesinin her bir elamanını for döngüsüne sokup driver.get(i) şeklinde yaparsanız driver.get("domain.com") > driver.get("domain2.com") şeklinde her url tek tek çalışacaktır.
    • For döngüsü içerisine yapacağınız tüm işlemleri koymanız gerekiyor. Eğer ki chrome un her seferinde kapanıp tekrar açılmasını istiyorsanız ( ki bu yöntem çok maliyetli bir yöntem) o zaman driver değişkenini for döngüsü içerisinde tanımlamanız gerekir. Aynı şekilde driver.quit() fonksiyonu da for döngüsünün içinde olması gerekiyor.
    • Ve her bir for döngüsünün sonunda herhangi bir veri karşıklığı olmaması adına tanımladığınız driver değişkenini ortadan kaldırmanız gerekiyor: driver = None
    Umarım açıklayabilmişimdir.
    • Son olarak kodunuzun içerisinde chrome_options=option diyeyerek chrome_options parametresini option değişkenine eşitlemek istemişsiniz fakat option değişkeni kodun içerisinde bulunmuyor.
    Bir de size Python ile ilgili önemli bir bilgi vereyim, Python satır girdilerini tanıyarak çalışan bir programlama dili yani her bir scope (javascriptte ki parantezler gibi düşünün) bir önce ki scope'tan 4 boşluk ileride olacak şekilde yazılmalı ki çalışabilsin. Ben çalışan bir kodu aşağıdya bırakıyorum.

    url_listesi = ["domain.com", "domain2.com", "vedigertumdomainler.com"] #for döngünüzün olabilmesi için bir url listeniz olması lazım.
    
    for i in url_listesi:    
        driver = webdriver.Chrome(chrome_options=option, executable_path='C:/Python39/chromedriver.exe')
        driver.get(i)
        sleep(2)
        driver.execute_script("window.open('','_blank');")
        # Yeni Sekme, window_handles'daki son nesne olur
        driver.switch_to.window(driver.window_handles[-1])
        driver.get('https://domain.com')
        # Konum odaklı ilk tıklama**********************************************
        actions: ActionChains = ActionChains(driver)
        actions.move_by_offset(300, 500).double_click().perform()
        sleepTimes = [12.1, 12.5, 13.0, 13.4, 13.8, 14.0, 14.4, 14.8, 15.0, 15.4, 15.8]
        sleep(random.choice(sleepTimes))
    
        driver.quit()
    
        driver = None
  • 04-01-2021, 18:05:43
    #7
    Hocam tum kodu while True dongusune alirsaniz muhtemelen calisir, ben de size bir sey sormak istiyorum. Ben de bir bot yaziyorum ve, tarayici her acildiginda ip adresinin degsimesini proxy ile ve tarayicidaki cerezlerin temizlenmesini istiyorum, bunun hakkinda bir bilginiz var mi
  • 04-01-2021, 18:09:45
    #8
    undercontr adlı üyeden alıntı: mesajı görüntüle
    Ben hataları tek tek söyliyeyim size açıklayarak.

    Aşağıda söylediklerim sizin farklı farklı URLleri for döngüsü içerisinde kullanmak istediğinizi varsayarak yazıyorum.
    • Öncelikle sizin bir URL listeniz olması lazım ki for döngünüz olabilsin, Chrome size her yeniden açıldığında yeni bir sayfa göstersin.
    • Bu URL listesinin her bir elamanını for döngüsüne sokup driver.get(i) şeklinde yaparsanız driver.get("domain.com") > driver.get("domain2.com") şeklinde her url tek tek çalışacaktır.
    • For döngüsü içerisine yapacağınız tüm işlemleri koymanız gerekiyor. Eğer ki chrome un her seferinde kapanıp tekrar açılmasını istiyorsanız ( ki bu yöntem çok maliyetli bir yöntem) o zaman driver değişkenini for döngüsü içerisinde tanımlamanız gerekir. Aynı şekilde driver.quit() fonksiyonu da for döngüsünün içinde olması gerekiyor.
    • Ve her bir for döngüsünün sonunda herhangi bir veri karşıklığı olmaması adına tanımladığınız driver değişkenini ortadan kaldırmanız gerekiyor: driver = None
    Umarım açıklayabilmişimdir.
    • Son olarak kodunuzun içerisinde chrome_options=option diyeyerek chrome_options parametresini option değişkenine eşitlemek istemişsiniz fakat option değişkeni kodun içerisinde bulunmuyor.
    Bir de size Python ile ilgili önemli bir bilgi vereyim, Python satır girdilerini tanıyarak çalışan bir programlama dili yani her bir scope (javascriptte ki parantezler gibi düşünün) bir önce ki scope'tan 4 boşluk ileride olacak şekilde yazılmalı ki çalışabilsin. Ben çalışan bir kodu aşağıdya bırakıyorum.

    url_listesi = ["domain.com", "domain2.com", "vedigertumdomainler.com"] #for döngünüzün olabilmesi için bir url listeniz olması lazım.
    
    for i in url_listesi:    
        driver = webdriver.Chrome(chrome_options=option, executable_path='C:/Python39/chromedriver.exe')
        driver.get(i)
        sleep(2)
        driver.execute_script("window.open('','_blank');")
        # Yeni Sekme, window_handles'daki son nesne olur
        driver.switch_to.window(driver.window_handles[-1])
        driver.get('https://domain.com')
        # Konum odaklı ilk tıklama**********************************************
        actions: ActionChains = ActionChains(driver)
        actions.move_by_offset(300, 500).double_click().perform()
        sleepTimes = [12.1, 12.5, 13.0, 13.4, 13.8, 14.0, 14.4, 14.8, 15.0, 15.4, 15.8]
        sleep(random.choice(sleepTimes))
    
        driver.quit()
    
        driver = None

    Hocam gerçekten çok değerli ve özenli bilgiler vermişsiniz ayırdığınız vakit için ayrıca teşekkür ediyorum.

    Ama şöyle bir durum var

    driver.get('https://domain.com')

    ilk girilen domainin aynısı olması gerekiyor
  • 04-01-2021, 18:10:57
    #9
    mralihan adlı üyeden alıntı: mesajı görüntüle
    Hocam tum kodu while True dongusune alirsaniz muhtemelen calisir, ben de size bir sey sormak istiyorum. Ben de bir bot yaziyorum ve, tarayici her acildiginda ip adresinin degsimesini proxy ile ve tarayicidaki cerezlerin temizlenmesini istiyorum, bunun hakkinda bir bilginiz var mi
    Hocam biraz bilgim var özelden konuşalım isterseniz siz de bu konuda kendinizi geliştiriyorsanız bilgi alışverişinde bulunabiliriz muhtemelen benzer şeyleri yapmaya çalışıyoruz

    while True döngüsünü de denedim ama çok tecrübeli olmadığım için sanırım kaçırdığım bir yer var, hatalar aldım sürekli