『心善渊』Selenium3.0基础 — 24.文件下载

使用selenium.webdriver实现下载文件功能,只需要配置一下浏览器的参数即可实现。

1、Firefox浏览器文件下载

步骤:

  1. 对于Firefox,需要我们设置其Profile:通过FirefoxProfile()方法创建一个Firefox自定义配置信息实例。
  2. 设置Firefox浏览器下载相关的自定义配置信息到Profile实例中。
  3. 启动Firefox,并把自定义配置Profile实例存储到浏览器对象中。
  4. 访问下载网站,进行下载。

实例:

需求:下载Firefox浏览器驱动文件

"""
1.学习目标
    了解使用火狐浏览器实现文件下载
2.操作步骤(语法)
    2.1 创建Firefox浏览器配置信息对象
        webdriver.FirefoxProfile()
    2.2 设置Firefox浏览器下载相关的自定义配置信息
    2.3 创建Firefox浏览器对象,并把自定义配置信息存储到浏览器对象中
    2.4 访问下载网站
    2.5 进行下载
3.需求
    使用火狐浏览器实现文件下载
"""
# 1.导入selenium
from selenium import webdriver
from time import sleep

# 2.创建Firefox浏览器配置信息对象,用于存放自定义配置
profile = webdriver.FirefoxProfile()

# 3. 配置profile下载相关信息
"""
3.1 指定自定义下载路径,默认只会自动创建一级目录,
    如果指定了多级不存在的目录,将会下载到默认路径,
    如下就是定义了多级不存在的目录,文件就下载到了火狐浏览器的默认下载目录中
    我的火狐默认下载路径:C:\\Users\\L\\Downloads
"""
profile.set_preference('browser.download.dir', 'f:\\Download\\123\\456')

"""
3.2 将browser.download.folderList设置为:
    设置成 0 表示下载到桌面
    设置成 1 表示下载到浏览器默认下载路径
    设置成 2 表示使用自定义下载路径
    
    和上面browser.download.dir配合使用,如果设置成0和1
    上面的配置基本无用。
"""
profile.set_preference('browser.download.folderList', 2)

"""
3.3 browser.helperApps.alwaysAsk.force:
    对于未知的 MIME 类型文件会弹出窗口让用户处理,
    默认值为true,设定为False,
    表示不会记录打开未知 MIME 类型文件的方式
"""
profile.set_preference("browser.helperApps.alwaysAsk.force", False)

"""
3.4 在开始下载时是否显示下载管理器
    设定为true,则在用户启动下载的时候显示Firefox浏览器的文件下载窗口
    否则不显示文件下载窗口。
"""
profile.set_preference('browser.download.manager.showWhenStarting', False)

"""
3.5 设定为 False 会把下载框进行隐藏
"""
profile.set_preference("browser.download.manager.useWindow", False)

"""
3.6 默认值为 true,设定为 False 表示不获取焦点
"""
profile.set_preference("browser.download.manager. focusWhenStarting", False)

"""
3.7 下载.exe文件弹出警告,
    默认值是 true,设定为False 则不会弹出警告框
"""
profile.set_preference("browser.download.manager.alertOnEXEOpen", False)

"""
3.8 browser.helperApps.neverAsk.openFile:
    表示直接打开下载文件,不显示确认框
    默认值为空字符串,下行代码行设定了多种文件的 MIME类型.
    例如:
        application/exe,表示.exe类型的文件,
        application/excel表示 Excel 类型的文件
"""
profile.set_preference("browser.helperApps.neverAsk.openFile", "application/zip")

"""
3.9 对所给出文件类型不再弹出框进行询问,直接保存到本地磁盘
"""
profile.set_preference('browser.helperApps.neverAsk.saveToDisk', 'application/zip, application/octet-stream')
"""
其他可选文件类型:
    application/a-gzip
    application/x-gzip,
    application/zip,
    application/x-gtar,
    text/plain,
    application/x-compressed,
    application/octet-stream,
    application/pdf
"""

"""
3.10 browser.download.manager.showAlertOnComplete:
    设定下载文件结束后是否显示下载完成提示框,
    默认为true,设定为False,
    表示下载完成后不显示下载完成提示框
"""
profile.set_preference("browser.download.manager. showAlertOnComplete", False)

"""
3.11 browser.download.manager.closeWhenDone:
    设定下载结束后是否自动关闭下载框,
    默认值为true,设定为False,
    表示不关闭下载管理器.
"""
profile.set_preference("browser.download.manager.closeWhenDone", False)

# 4. 创建浏览器对象
# 启动浏览器时,通过firefox_profile参数
# 将自动以配置添加到FirefoxProfile对象中
driver = webdriver.Firefox(firefox_profile=profile)

# 5. 访问Firefox浏览器驱动文件下载网址
driver.get("https://npm.taobao.org/mirrors/geckodriver/v0.20.0/")
sleep(3)

# 6. 定位下载链接,并点击下载
file = driver.find_element_by_link_text("geckodriver-v0.20.0-win64.zip")
file.click()
sleep(3)

# 7.关闭浏览器
driver.quit()

参考:https://www.cnblogs.com/qingqing-919/p/8716176.html

2、Chrome浏览器文件下载

示例:

Chrome浏览器,设置其options:

  1. download.default_directory:设置下载路径。

  2. profile.default_content_settings.popups:设置为0禁止弹出窗口。

"""
1.学习目标
    了解使用谷歌浏览器实现文件下载
2.操作步骤(
    2.1 创建谷歌浏览器加载项对象
        webdriver.ChromeOptions()
    2.2 定义Chrome浏览器加载项参数
    2.3 将加载项参数添加到谷歌浏览器加载项对象中
        options.add_experimental_option('prefs', prefs)
    2.4 创建Chrome浏览器对象,并把自定义加载项对象存储到浏览器对象中
    2.5 访问下载网站
    2.6 进行下载
3.需求
    使用谷歌浏览器实现文件下载
"""
# 1.导入selenium
from selenium import webdriver
from time import sleep

# 2. 创建谷歌浏览器加载项对象
options = webdriver.ChromeOptions()

# 3. 定义加载项参数
prefs = {'profile.default_content_settings.popups': 0,
         'download.default_directory': 'f:\\'}

# 4.将加载项参数添加到谷歌浏览器加载项对象中
options.add_experimental_option('prefs', prefs)

# 5. 创建浏览器对象,并添加加载项对象
driver = webdriver.Chrome(options=options)

# 6. 方位下载页面
driver.get('https://npm.taobao.org/mirrors/chromedriver/80.0.3987.106/')

# 7. 点击下载
driver.find_element_by_link_text("chromedriver_win32.zip").click()
sleep(3)

# 8.关闭浏览器
driver.quit()

说明:

chrome 其他常用启动参数

需要用的时候直接添加到配置信息中。

  1. 取消浏览器下载时保存路径弹框

    "download.prompt_for_download": False,
    "download.directory_upgrade": True,
        
    """
    'profile.default_content_settings.popups': 0
    是禁止弹出所有窗口
    """
    
  2. 是否提示安全警告

    # 下载xml文件时,会弹出“此文件类型可能会损害您的计算机”的提示。
    # 而不显示消息警告,需要添加下面配置,使用Selenium chromedriver禁用此弹出窗口。
    "safebrowsing.enabled": True
    
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 219,589评论 6 508
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,615评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 165,933评论 0 356
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,976评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,999评论 6 393
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,775评论 1 307
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,474评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,359评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,854评论 1 317
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,007评论 3 338
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,146评论 1 351
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,826评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,484评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,029评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,153评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,420评论 3 373
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,107评论 2 356