前言
上一篇是點彈出框上的按鈕去保存文件,本篇介紹一種更加優雅的方法,加載Firefox和Chrome的配置文件,不彈出詢問框后台下載。
一、FirefoxProfile
1.點下載的時候,如下圖,如果不想讓它彈出這個詢問框,可以加載firefox的配置文件隱藏起來
2.設置各項參數,參數可以通過在瀏覽器地址欄中輸入about:config查看
3.FirefoxProfile的配置說明
-'browser.download.folderList':設置成0表示下載到桌面;設置成1表示下載到默認路徑;設置成2則可以保存到指定目錄;
- 'browser.download.dir' :“設置一個本地電腦路徑:‘d:\\’ ”
- "browser.download.manager.showWhenStarting", False 是否顯示下載進度框,下圖所示(這個設置沒生效)
- "browser.helperApps.neverAsk.saveToDisk", "application/octet-stream" 對所給出文件類型不再彈出框進行詢問
二、文件類型
1.第四個參數文件類型這里一定要注意了,下載的不同文件類型,參數是不一樣的,可以查閱:MIME 參考手冊 http://www.w3school.com.cn/media/media_mimeref.asp
三、Firefox配置
# coding:utf-8
from selenium import webdriver
# 設置各項參數,參數可以通過在瀏覽器地址欄中輸入about:config查看。
profile = webdriver.FirefoxProfile()
# 設置成0表示下載到桌面;設置成1表示下載到默認路徑;設置成2則可以保存到指定目錄;
profile.set_preference('browser.download.folderList', 2)
# 指定下載文件到你想放的路徑
profile.set_preference('browser.download.dir', 'd:\\')
# 開始下載時候顯示是否顯示進度框 (這個設置目前沒生效)
profile.set_preference("browser.download.manager.showWhenStarting", False)
# 對所給出文件類型不再彈出框進行詢問
profile.set_preference("browser.helperApps.neverAsk.saveToDisk", "application/octet-stream")
driver = webdriver.Firefox(firefox_profile=profile)
# 打開有道雲筆記
driver.get("http://note.youdao.com/")
# 點立即下載按鈕
driver.find_element_by_id("download-btn").click()
四、Chrome配置
# coding:utf-8
from selenium import webdriver
profile = webdriver.ChromeOptions()
prefs = {'profile.default_content_settings.popups': 0, # 設置為 0 禁止彈出窗口
'download.default_directory': 'd:\\'} # 指定下載路徑
profile.add_experimental_option('prefs', prefs)
# executable_path這個是chromedriver的路徑 如果設置過環境變量,此參數可以省略
chromedriver_path = "D:\\path\\chromedriver.exe" # 自己本地電腦路徑
driver = webdriver.Chrome(executable_path=chromedriver_path, chrome_options=profile)
# 打開有道雲筆記
driver.get("http://note.youdao.com/")
# 點立即下載按鈕
driver.find_element_by_id("download-btn").click()