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) Python Selenium Yardım
3
●106
- 19-11-2023, 12:21:26Arkadaş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.
- 19-11-2023, 13:09:20PM ilettim hocam.qMachineCEO adlı üyeden alıntı: mesajı görüntüle
- 19-11-2023, 15:24:44ş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)