0

我正在尝试在 OS X 10.8 上使用带有 python 绑定的 selenium webdriver 下载 pdf。

我实际上需要pdf文件,而不仅仅是检查下载链接是否有效。据我了解,我需要设置 firefox 配置文件来下载 pdf 内容类型,而不是默认的“预览”。

我打开 Firefox 实例的代码是:

def Engage():
    print "Start Up FIREFOX"
    ## Create a new instance of the Firefox driver
    profile = webdriver.firefox.firefox_profile.FirefoxProfile()
    profile.set_preference('browser.download.folderList', 2)
    profile.set_preference('browser.download.dir', os.path.expanduser("~/Documents/PYTHON/Download_Files/tmp/"))
    profile.set_preference('browser.helperApps.neverAsk.saveToDisk', ('application/pdf'))
    driver = webdriver.Firefox(firefox_profile=profile)
    return driver

我也尝试过最初将配置文件设置为:

profile = webdriver.FirefoxProfile()
## replacing :: profile = webdriver.firefox.firefox_profile.FirefoxProfile()
## the other attributes remained

这具有相同的结果

此配置文件在新窗口中以预览模式打开 pdf,而不是下载它。

我通过请求仔细检查了内容类型,并能够将其确认为“应用程序/pdf”:

import requests
print requests.head('mywebsite.com').headers['content-type']

知道我做错了什么吗?

4

2 回答 2

1

曾经面临过类似的情况。解决方法很简单。默认情况下,Firefox 中的设置会打开 pdf 文件,而不是允许您下载它。要克服这种类型 config:about 在浏览器中并键入 pdfjs.disabled 双击该选项。该值应从 false 更改为 true。重新启动浏览器并尝试打开任何 pdf 文件。它将下载文件而不是在浏览器中打开它。快乐编码。

于 2013-10-08T06:30:11.537 回答
0

我面临着同样的问题。我的代码是用 Java 编写的,但我确信您可以将属性转移到 python 中匹配。这是有效的方法(请注意,您需要指定可以写入的目录的路径):

FirefoxProfile profile = new FirefoxProfile();
profile.setPreference( "browser.download.folderList", 2 );
profile.setPreference( "browser.download.dir", <YOUR DOWNLOAD PATH> );
profile.setPreference( "plugin.disable_full_page_plugin_for_types", "application/pdf" );
profile.setPreference(
                "browser.helperApps.neverAsk.saveToDisk",   
"application/csv,text/csv,application/pdfss, application/excel" );
profile.setPreference( "browser.download.manager.showWhenStarting", false );
profile.setPreference( "pdfjs.disabled", true );
于 2014-04-03T14:22:38.537 回答