首页 > 解决方案 > 即使设置了首选项,python selenium 也不会绕过 firefox 下载对话框

问题描述

我正在尝试从以下链接下载文件(市场摘要(关闭)- ZIP): https ://dps.psx.com.pk/downloads

这是我的代码:

from datetime import date
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.common.exceptions import ElementClickInterceptedException
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.common.exceptions import TimeoutException
import time

profile = webdriver.FirefoxProfile()
profile.set_preference("browser.preferences.instantApply",True)
profile.set_preference("browser.helperApps.neverAsk.saveToDisk", "text/csv")
profile.set_preference("browser.helperApps.alwaysAsk.force",False)
profile.set_preference("browser.download.manager.showWhenStarting",False)
profile.set_preference("browser.download.folderList",0)


driver = webdriver.Firefox(firefox_profile=profile)
driver.get('https://dps.psx.com.pk/downloads')

start_date = driver.find_element_by_id('downloadsDatePicker')
start_date.send_keys(Keys.BACKSPACE*10)
send_date = date(2014,1,1).strftime("%Y-%m-%d")
start_date.send_keys(send_date)
driver.find_element_by_id('downloadsSearchBtn').click()
link = '/download/mkt_summary/{}.Z'.format(send_date)
time.sleep(5)
driver.find_element_by_css_selector("a[href='{}'".format(link)).click()

即使我已经设置了首选项,firefox 仍然会弹出一个下载对话框。为什么会这样,我该如何避免这种行为?

标签: python-3.xseleniumweb-scraping

解决方案


根据您正在准备的站点和链接,您不是在下载 csv 文件,而是主要是带有 .Z 扩展名的 zip 文件。

您需要更改代码browser.helperApps.neverAsk.saveToDisk以允许从站点收到响应,如下所示。

profile.set_preference("browser.helperApps.neverAsk.saveToDisk", "application/octet-stream")

推荐阅读