Python Selenium pdf自动下载不起作用

Python Selenium pdf自动下载不起作用,python,selenium,selenium-webdriver,web-scraping,web-crawler,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_preferenc

我是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和this中提到的步骤。我不知道为什么每次都会显示下载对话框


还有什么方法可以修复它吗?还有什么方法可以给出“application/all”这样所有的文件都可以下载(解决问题)?

既然没有HTML代码可用,我猜这一行

webobj = browser.find_element_by_id("download").click();
实际上调用了
onclick
事件,但处理不当。换句话说,您缺少的是该.pdf文件的存储位置。我几乎没有python编程的经验,但一个解决方案是使用HTTP webclient lib,它将允许您自动下载文件。差不多。如果使用得当,您可以跳过此操作的任何Selenium命令


也许类似的东西会是一个好的开始。

禁用内置的
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");

我测试了以下代码,并在Windows 7上成功下载了您的pdf:

fp = webdriver.FirefoxProfile()
fp.set_preference("browser.download.folderList", 2)
fp.set_preference("browser.download.manager.showWhenStarting", False)
fp.set_preference("browser.download.dir", download_location)
fp.set_preference("plugin.disable_full_page_plugin_for_types", "application/pdf")
fp.set_preference("pdfjs.disabled", True)
fp.set_preference("browser.helperApps.neverAsk.saveToDisk", "application/pdf")



driver = webdriver.Firefox(fp)
driver.implicitly_wait(10)
driver.maximize_window()
driver.get("http://epaper.dinamalar.com/")
element = driver.find_element_by_css_selector("li#liSavePdf>a>img")
element.click()

即使在提到代码之后,我仍然面临这个问题。OS有可能参与其中吗?我用的是UBUNTU 14.04。@Gaara有趣的是,它适合我:selenium 2.45+firefox 35.0.1在Mac上。我用的是selenium 2.45.0,UBUNTU 14.04 firefox 38.0。我正在尝试各种可能性。下载弹出窗口也不在窗口句柄下。它不会处于警戒状态。还有什么可以做的吗?如果您愿意,我可以发布到我的脚本的链接。@Gaara是的,请共享您正在执行的当前代码。谢谢,非常感谢。下面是链接函数“从子链接下载页面链接()”负责单击“下载”按钮并调用下载对话框。如果你需要任何信息,请告诉我
fp = webdriver.FirefoxProfile()
fp.set_preference("browser.download.folderList", 2)
fp.set_preference("browser.download.manager.showWhenStarting", False)
fp.set_preference("browser.download.dir", download_location)
fp.set_preference("plugin.disable_full_page_plugin_for_types", "application/pdf")
fp.set_preference("pdfjs.disabled", True)
fp.set_preference("browser.helperApps.neverAsk.saveToDisk", "application/pdf")



driver = webdriver.Firefox(fp)
driver.implicitly_wait(10)
driver.maximize_window()
driver.get("http://epaper.dinamalar.com/")
element = driver.find_element_by_css_selector("li#liSavePdf>a>img")
element.click()