python - Selenium pdf自动下载不起作用

标签 python selenium selenium-webdriver web-scraping web-crawler

我是 selenium 的新手,我正在编写一个爬虫来自动从给定站点下载 pdf 文件。

下面是我的代码:

from selenium import webdriver

fp = webdriver.FirefoxProfile()

fp.set_preference("browser.download.folderList",2);
fp.set_preference("browser.download.manager.showWhenStarting",False)
fp.set_preference("browser.download.dir", "/home/jill/Downloads/Dinamalar")
fp.set_preference("browser.helperApps.neverAsk.saveToDisk", "application/pdf")

browser = webdriver.Firefox(firefox_profile=fp)
browser.get("http://epaper.dinamalar.com/PUBLICATIONS/DM/MADHURAI/2015/05/26/PagePrint//26_05_2015_001_b2b69fda315301809dda359a6d3d9689.pdf");
webobj = browser.find_element_by_id("download").click();

我遵循了 Selenium documentation 中提到的步骤在这个 link .我不确定为什么每次都显示下载对话框。

有没有办法修复它,还有没有办法提供“应用程序/全部”,以便可以下载所有文件(解决方法)?

最佳答案

禁用内置的 pdfjs 插件并导航到 URL - PDF 文件将自动下载,代码:

from selenium import webdriver

fp = webdriver.FirefoxProfile()

fp.set_preference("browser.download.folderList", 2)
fp.set_preference("browser.download.manager.showWhenStarting",False)
fp.set_preference("browser.download.dir", "/home/jill/Downloads/Dinamalar")
fp.set_preference("browser.helperApps.neverAsk.saveToDisk", "application/pdf,application/x-pdf")

fp.set_preference("pdfjs.disabled", "true")  # < KEY PART HERE

browser = webdriver.Firefox(firefox_profile=fp)
browser.get("http://epaper.dinamalar.com/PUBLICATIONS/DM/MADHURAI/2015/05/26/PagePrint//26_05_2015_001_b2b69fda315301809dda359a6d3d9689.pdf");

更新(对我有用的完整代码):

from selenium import webdriver

mime_types = "application/pdf,application/vnd.adobe.xfdf,application/vnd.fdf,application/vnd.adobe.xdp+xml"

fp = webdriver.FirefoxProfile()
fp.set_preference("browser.download.folderList", 2)
fp.set_preference("browser.download.manager.showWhenStarting", False)
fp.set_preference("browser.download.dir", "/home/aafanasiev/Downloads")
fp.set_preference("browser.helperApps.neverAsk.saveToDisk", mime_types)
fp.set_preference("plugin.disable_full_page_plugin_for_types", mime_types)
fp.set_preference("pdfjs.disabled", True)

browser = webdriver.Firefox(firefox_profile=fp)
browser.get("http://epaper.dinamalar.com/")

webobj_get_link = browser.find_element_by_id("liSavePdf")
webobj_get_object = webobj_get_link.find_element_by_tag_name("a")
webobj_get_object.click()

关于python - Selenium pdf自动下载不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30452395/

相关文章:

python - 写入文件时 ffmpeg osx 错误 : "Unrecognized option ' preset'. 分割参数列表时出错:未找到选项

java - 正则表达式未从所有字段中获取正确的值

python - 有没有办法在 Gtk 窗口/小部件中停用鼠标光标?

python - Python 中使用 SSH key 和密码的 sFTP

python - 无法使用selenium python找到信用卡号码的元素

java - 查找当年询问最多次数的标签名称并打印计数

python - 如何使用 Selenium 来点击某些东西

亚马逊 linux/aws Lambda 上的 python selenium chromedriver

python - Selenium 源缺少登录字段

python - 查找列之间不匹配的条目并遍历列