• 19-11-2023, 12:21:26
    #1
    Arkadaşlar merhaba, selenium ile bir indirme botu yazmaya çalışıyorum. Tek link olarak indirmesini sağlayabiliyorum. Fakat benim elimde liste var o listeyi komple indirtmek istiyorum. Site şu şekilde linki girdi alanına yapıştırıyorum ve indirme butonuna basıyorum. Ekrana bekleme sayfası (modal) açılıyor indirmeyi hazırlıyor daha sonra indirilecek dosya hazır olunca indirme hazır diyerek buton çıkartıp otomatik indirme başlıyor. Bir sonraki link için sistem 2 dakika bekletiyor. Bu şekilde kodu düzenlememe yardımcı olurmusunuz? Aşağıdaki kod şeklinde hazırladım ama birinci sırayı indirip ikinci sıraya geçmiyor.

    with open("linkler.txt", "r") as file:
      lines = file.readlines()
    
    for line in lines:
      link = driver.find_element(By.NAME, value="link")
      link.clear()  # Girdi alanını temizle
      link.send_keys(line.strip())  # Satırı girdi olarak ver
      driver.find_element(
          By.XPATH,
          "/html/body/div[2]/div/div[5]/div[2]/div/div[1]/div/div/button").click() #Girdiden sonra indirme butonuna bas
    
      try:
        # "İndirme Hazır" butonunun çıkmasını bekle
        wait = WebDriverWait(driver, 15)
        wait.until(
            EC.visibility_of_element_located(
                (By.XPATH,
                 "/html/body/div[2]/div/div[5]/div[2]/div/div[2]/div/div/div[2]")))
    
        modal = driver.find_element(
            By.XPATH,
            "/html/body/div[2]/div/div[5]/div[2]/div/div[2]/div/div/div[2]")
        metin = modal.text
    
        if "İndirme Hazır" in metin:
         
          download_button = driver.find_element(
              By.XPATH,
              "/html/body/div[2]/div/div[5]/div[2]/div/div[2]/div/div/div[2]/center/a"
          )
          download_button.click()
    
          # Dosyanın indirildiğini doğrula
          wait.until(EC.url_contains("downloaded_file_name"))
    
          # İndirilen dosyanın adını al
          downloaded_file_name = driver.current_url.split("/")[-1]
    
          # İndirilen dosyanın adını yazdır
          print("Dosya indirildi:", downloaded_file_name)
          print("Metin doğrulandı!")
    
        # 120 saniye bekleyin
        sleep(120)
    except TimeoutException:
        print("120 Saniye hatası görüntülendi! Lütfen bekleyin")
    
        # 120 saniye bekleyin
        sleep(120)
  • 19-11-2023, 12:55:52
    #2
    Hangi site, ben de deneyeyim?
  • 19-11-2023, 13:09:20
    #3
    qMachineCEO adlı üyeden alıntı: mesajı görüntüle
    Hangi site, ben de deneyeyim?
    PM ilettim hocam.
  • 19-11-2023, 15:24:44
    #4
    şunun dene

    from selenium.webdriver.common.by import By
    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.support import expected_conditions as EC
    from time import sleep
    
    # Linkleri dosyadan oku
    with open("linkler.txt", "r") as file:
        lines = file.readlines()
    
    for line in lines:
        link = driver.find_element(By.NAME, value="link")
        link.clear()  
        link.send_keys(line.strip())  
        driver.find_element(By.XPATH, "/html/body/div[2]/div/div[5]/div[2]/div/div[1]/div/div/button").click() 
    
        try:
            # "İndirme Hazır" butonunun çıkmasını bekle
            wait = WebDriverWait(driver, 15)
            wait.until(EC.visibility_of_element_located((By.XPATH, "/html/body/div[2]/div/div[5]/div[2]/div/div[2]/div/div/div[2]")))
    
            modal = driver.find_element(By.XPATH, "/html/body/div[2]/div/div[5]/div[2]/div/div[2]/div/div/div[2]")
            metin = modal.text
    
            if "İndirme Hazır" in metin:
                download_button = driver.find_element(By.XPATH, "/html/body/div[2]/div/div[5]/div[2]/div/div[2]/div/div/div[2]/center/a")
                download_button.click()
    
                # Dosyanın indirildiğini doğrula
                wait.until(EC.url_contains("downloaded_file_name"))
    
                # İndirilen dosyanın adını al
                downloaded_file_name = driver.current_url.split("/")[-1]
    
                # İndirilen dosyanın adını yazdır
                print("Dosya indirildi:", downloaded_file_name)
                print("Metin doğrulandı!")
    
                # İndirme işlemi tamamlandıktan sonra 120 saniye bekle
                sleep(120)
    
        except TimeoutException:
            print("120 Saniye hatası görüntülendi! Lütfen bekleyin")
            # Bekleme hatası durumunda da 120 saniye bekle
            sleep(120)