Estoy tratando de descargar archivos de un sitio web de conjuntos de datos de VA con un raspador de Python, pero tengo problemas para descubrir cómo analizar el JavaScript en el sitio web HTML que parece contener los archivos. Este es el código fuente del sitio web (ver fuente: https://www.data.va.gov/dataset/Air-Force-Veterans-2017-Living-Only/9u8y-zaby ). Estoy tratando de descargar los archivos ".xlsx", que (simplemente usando el comando + F en mi Mac) creo que están en objetos de JavaScript. He buscado en este sitio y en otros, pero no he podido descubrir cómo extraer enlaces desde JavaScript. ¿Cómo debo hacer esto? Cualquier ayuda sería muy apreciada.
Ese sitio web se genera dinámicamente, puede usar Selenium para descargar los archivos deseados
Aquí hay un código de trabajo usando wget , selenium y webdriver_manager
Esto verificará el enlace y guardará el archivo xlsx en el directorio definido por el usuario
import time import wget import requests from selenium import webdriver from selenium.webdriver import Chrome from selenium.webdriver import ChromeOptions, FirefoxOptions from selenium.webdriver.common.by import By from selenium.webdriver.chrome.service import Service from webdriver_manager.chrome import ChromeDriverManager options = ChromeOptions() # try out options # options.binary_location = '/opt/headless-chromium' # options.add_argument("--headless") # options.add_argument("--disable-gpu") # options.add_argument("--no-sandbox") # options.add_argument('--disable-dev-shm-usage') # options.add_argument('--disable-gpu-sandbox') # options.add_argument("--single-process") options.add_argument( "user-agent=Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.54 Safari/537.36") options.add_argument('--disable-blink-features=AutomationControlled') options.add_experimental_option("useAutomationExtension", False) options.add_experimental_option("excludeSwitches", ["enable-automation"]) s = Service(ChromeDriverManager().install()) # s = Service(GeckoDriverManager().install()) driver = webdriver.Chrome(service=s, options=options) driver.get('https://www.data.va.gov/dataset/Air-Force-Veterans-2017-Living-Only/9u8y-zaby') time.sleep(3) # get the link download_link = driver.find_element(By.XPATH, '//*[@id="app"]/div/div[2]/section/div/div/div[2]/a').get_attribute( 'href') # download the file output_directory = 'data' # it will download the file to data directory filename = wget.download(download_link, out=output_directory) time.sleep(3) driver.close() driver.quit()