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

时间:2017-03-31 20:56:13

标签: python selenium pdf download automation

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

Dialog Box

6 个答案:

答案 0 :(得分:2)

您可以使用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`)

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

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

希望它有所帮助!

答案 1 :(得分:1)

我有同样的问题,因为上一版本的Chrome会在浏览器中打开PDFServlet的所有PDF,而不是直接启动下载过程。

在上一个Chrome版本中,您可以访问chrome:plugins并禁用Chrome PDF Viewer,但此选项现在不存在。

我尝试嵌入和src pdf路径并尝试使用c#HttpWebClientRequest尝试下载,但这对我不起作用。

我尝试查看文档以尝试查找禁用此PDF功能的参数,但我找不到它。

答案 2 :(得分:1)

尝试此代码,对我有用。

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

答案 3 :(得分:1)

我做到了,它奏效了,别问我怎么做的:)

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)

答案 4 :(得分:0)

就我而言,它无需修改任何代码即可工作,只需禁用Chrome pdf查看器

以下是禁用它的步骤

  1. 进入Chrome设置
  2. 滚动到底部,单击“高级”
  3. 在隐私和安全下-点击“网站设置”
  4. 滚动到PDF文档
  5. 启用“下载PDF文件,而不是在Chrome中自动打开它们”

答案 5 :(得分:0)

我在 Stackoverflow 的某个地方发现了这段代码,它为我服务,根本不需要使用 selenium。

import urllib.request

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