我无法在Python中使用selenium下载文件

问题描述 投票:0回答:2

我实际上使用的是selenium,我需要获取可以使用下载的文件

driver.get_downloadable_files(),

但我收到以下错误:

Exception has occurred: WebDriverException
Message: You must enable downloads in order to work with downloadable files.
  File "/Users/abderrahim/Documents/alertes_aggregator/utils/profile_extractor.py", line 81, in linkedin_profile
    pdf = driver.get_downloadable_files()*

这个问题有什么解决办法吗?知道我已经添加了实验选项:

options.add_argument("--disable-popup-blocking")
    options.add_experimental_option("prefs", {
        "download.default_directory": r"/Users/abderrahim/Documents/cv_apec",
        "download.prompt_for_download": False
        })

我尝试了几种解决方案,但似乎都不起作用,有什么建议吗?

python selenium-webdriver
2个回答
0
投票

查看 selenium 的文档 这里

表示下载

在网格中启用下载 无论是哪个客户端,在节点或独立模式下启动网格时,必须添加标志:

--enable-managed-downloads true

在客户端中启用下载 网格使用 se:downloadsEnabled 功能来切换是否负责管理浏览器位置。每个绑定在选项类中都有一个方法来设置它。

对于蟒蛇:

options = webdriver.ChromeOptions()
options.enable_downloads = True
driver = webdriver.Remote(command_executor=server, options=options)

然后你就这样列出

files = driver.get_downloadable_files()

然后下载

driver.download_file(downloadable_file, target_directory)

有关 guthub 上从 selenium 文档下载部分的完整示例,请检查此处


0
投票

这似乎有很多代码,而自定义设置并不通用,并且仅适用于基于 Chromium 的浏览器。这就是我创建 Browserist 包的原因,这样您就不必担心细节(例如,默认情况下已启用下载)。

在文档中查找有关下载文件的方法的更多信息。

也许这样的东西会起作用?

from browserist import Browser, BrowserSettings

settings = BrowserSettings(
    download_dir="/Users/abderrahim/Documents/cv_apec"
)

with Browser(settings) as browser:
    browser.open.url("https://example.com")
    pdf_file_path = browser.click.download_and_get_file_path("//xpath/to/pdf/link")
    print(pdf_file_path)

预期的输出将是这样的:

/Users/abderrahim/Documents/cv_apec/file.pdf

如果您更喜欢在启动浏览器设置后直接使用 Selenium WebDriver,您可以随时执行以下操作:

from browserist import Browser, BrowserSettings

settings = BrowserSettings(
    download_dir="/Users/abderrahim/Documents/cv_apec"
)

with Browser(settings) as browser:
    driver = browser.driver
    driver.get_downloadable_files()

完全公开,我是 Browserist 包的作者。 Browserist 是 Selenium Web 驱动程序的轻量级、简洁的扩展,使浏览器自动化变得更加容易。

只需使用

pip install browserist
安装软件包即可开始使用。

© www.soinside.com 2019 - 2024. All rights reserved.