es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Python Webscraper Descargar PDF en Firefox

Estoy programando un Web Scraper en Python que necesita poder hacer clic en un botón de descarga y guardar un PDF en una ubicación que está definida en un archivo XML.

La parte problemática de mi código es la siguiente:

profile = webdriver.FirefoxProfile()

download_Path = items.get(key = 'dir') # Obtener la ruta de descarga desde el XML.

if not os.path.exists(download_Path):
    os.makedirs(download_Path)

profile.set_preference("browser.helperApps.alwaysAsk.force", False)
profile.set_preference("browser.download.panel.shown", False)
profile.set_preference("browser.download.manager.useWindow", False)
profile.set_preference("webdriver_enable_native_events", False)
profile.set_preference("browser.helperApps.neverAsk.openFile", "application/pdf;")
profile.set_preference("browser.helperApps.neverAsk.saveToDisk", "application/pdf;")
profile.set_preference("browser.download.folderList", 2)
profile.set_preference("browser.download.dir", download_Path)
profile.update_preferences()

driver = webdriver.Firefox(executable_path = DriverPath, options = options, firefox_profile = profile)

Casi todo funciona bien, el directorio de descarga se cambia de la manera pretendida, por lo que el profile.set_preferences funciona, pero las otras preferencias no cambian. He estado buscando durante un tiempo y como puedes ver, he probado diferentes opciones para que el navegador no pregunte si se debe abrir el archivo o dónde guardarlo, y simplemente lo mueva al directorio indicado.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Parece que el problema que estás enfrentando se debe a que las preferencias de Firefox no están configuradas correctamente. Específicamente, las preferencias relacionadas con la descarga de archivos no se están aplicando.

    Aquí tienes algunas sugerencias que podrías probar:

    • Asegúrate de que el navegador que estás utilizando sea la misma versión que el controlador web que estás utilizando. Si las versiones son diferentes, es posible que las preferencias no se apliquen correctamente.
    • Considera utilizar nombres de preferencias diferentes. Por ejemplo, en lugar de utilizar “browser.helperApps.neverAsk.openFile”, intenta utilizar “pdfjs.disabled” o “pdfjs.enabled”. Estas preferencias controlan el visor de PDF incorporado en Firefox, que puede estar interfiriendo con la capacidad de tu script para guardar archivos PDF.
    • Prueba a utilizar un método diferente para establecer las preferencias. En lugar de utilizar “profile.set_preference()”, podrías intentar establecer las preferencias directamente en el archivo “user.js” del perfil de Firefox. Este archivo se encuentra en el directorio de perfiles de Firefox, y puedes añadir líneas como “user_pref(“pdfjs.disabled”, true);” para establecer preferencias.
    • También podrías probar a utilizar un controlador web diferente, como Chrome o Safari. Si bien esto puede requerir actualizar tu código, puede ayudar a identificar si el problema es específico de Firefox o no.

    ¡Espero que alguna de estas sugerencias te ayude a resolver el problema!

Comments are closed.