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)