Selenium Webdriver:如何使用 Python 下载 PDF 文件?

Ril*_*Hun 11 python pdf selenium automation download

我正在使用 selenium webdriver 自动下载多个 PDF 文件。我得到了 PDF 预览窗口(见下文),现在我想下载该文件。如何使用 Google Chrome 作为浏览器完成此操作?

对话框

小智 19

试试这个代码,它对我有用。

options = webdriver.ChromeOptions()
options.add_experimental_option('prefs', {
"download.default_directory": "C:/Users/XXXX/Desktop", #Change default directory for downloads
"download.prompt_for_download": False, #To auto download the file
"download.directory_upgrade": True,
"plugins.always_open_pdf_externally": True #It will not show PDF directly in chrome
})
self.driver = webdriver.Chrome(options=options
Run Code Online (Sandbox Code Playgroud)

  • `download.directory_upgrade` 是做什么用的? (3认同)
  • 直到我将默认目录更改为使用反斜杠之前,这对我不起作用,因此我使用“C:\\Users\\XXXX\\Desktop”而不是“C:/Users/XXXX/Desktop”。 (2认同)

小智 5

我做到了,而且成功了,别问我怎么做的:)

options = webdriver.ChromeOptions()
options.add_experimental_option('prefs', {
#"download.default_directory": "C:/Users/517/Download", #Change default directory for downloads
#"download.prompt_for_download": False, #To auto download the file
#"download.directory_upgrade": True,
"plugins.always_open_pdf_externally": True #It will not show PDF directly in chrome 
})
driver = webdriver.Chrome(options=options)
Run Code Online (Sandbox Code Playgroud)


小智 5

I found this piece of code somewhere on Stackoverflow itself and it serves the purpose for me without having to use selenium at all.

import urllib.request

response = urllib.request.urlopen(URL)    
file = open("FILENAME.pdf", 'wb')
file.write(response.read())
file.close()
Run Code Online (Sandbox Code Playgroud)

  • 此方法仅适用于未经身份验证的会话。它对于需要登录的网站来说并不健壮。@Kumar 的答案适用于未经身份验证和经过身份验证的会话。 (2认同)

Om *_*ash 3

您可以使用 selenium 从网络下载 pdf ( Embeded pdf& Normal pdf)。

from selenium import webdriver

download_dir = "C:\\Users\\omprakashpk\\Documents" # for linux/*nix, download_dir="/usr/Public"
options = webdriver.ChromeOptions()

profile = {"plugins.plugins_list": [{"enabled": False, "name": "Chrome PDF Viewer"}], # Disable Chrome's PDF Viewer
               "download.default_directory": download_dir , "download.extensions_to_open": "applications/pdf"}
options.add_experimental_option("prefs", profile)
driver = webdriver.Chrome('C:\\chromedriver\\chromedriver_2_32.exe', chrome_options=options)  # Optional argument, if not specified will search path.

driver.get(`pdf_url`)
Run Code Online (Sandbox Code Playgroud)

它将下载 pdf 并将其保存在指定的目录中。根据您的方便更改download_dir位置。chrome driver location

您可以从这里下载 Chrome 驱动程序。

希望能帮助到你!