Home > database >  Download files with selenium
Download files with selenium

Time:01-06

I'm trying to download individual downloads for each pdf in this page, one download per article. Everyday the number of articles may change

https://diariooficial.elperuano.pe/Normas

I'm kinda new using selenium so I'm not sure how to do it, thanks!

I tried this

chrome_driver = webdriver.Chrome("chromedriver.exe") chrome_driver.get("https://diariooficial.elperuano.pe/Normas") a_list = chrome_driver.find_elements_by_link_text("Descarga individual") for a in a_list: a.click() time.sleep(3)

CodePudding user response:

What you can do here is:
Wait for all the download button elements appearing (the page is loaded).
Get the list of all downloading bottons.
Iterate over these elements clicking them one by one with some pause between these clicks to make downloading performed properly.
The following code works, I tested it.

import time

from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC

options = Options()
options.add_argument("start-maximized")

webdriver_service = Service('C:\webdrivers\chromedriver.exe')
driver = webdriver.Chrome(service=webdriver_service, options=options)

url = 'https://diariooficial.elperuano.pe/Normas'
driver.get(url)
wait = WebDriverWait(driver, 20)

buttons = wait.until(EC.presence_of_all_elements_located((By.XPATH, "//article//a[contains(.,'Descarga')]")))
for button in buttons:
    button.click()
    time.sleep(1)
  • Related