• 解决selenium使用chrome下载文件(如pdf)时,反而打开浏览器的预览界面


    解决方法

    在初始化浏览器的时候,添加以下配置即可:

        option = webdriver.ChromeOptions()
        prefs = {
            "profile.managed_default_content_settings.images": 2,  # 禁止加载图片
            # 'permissions.default.stylesheet': 2,  # 禁止加载css
            # ====== 配置下载 =====
            'profile.default_content_settings.popups': 0,  # 取消下载确认弹窗
            # 默认下载路径
            'download.default_directory': r"C:\Users\User4\Downloads", # 这个是自定义的下载路径
            "profile.default_content_setting_values.automatic_downloads": 1,  # 允许多文件下载
            "download.prompt_for_download": False,  # To auto download the file
            "download.directory_upgrade": True,
            "plugins.always_open_pdf_externally": True
        }
        option.add_experimental_option("prefs", prefs)
        browser = webdriver.Chrome(options=option)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    完整的配置

    使用如下程序初始化,可以避免很多问题:

    from selenium import webdriver
    def get_browser():
        option = webdriver.ChromeOptions()
        option.add_argument('--disable-gpu')
        option.add_argument('lang=zh_CN.UTF-8')
        # option.add_argument('headless')  # 无界面
        prefs = {
            "profile.managed_default_content_settings.images": 2,  # 禁止加载图片
            # 'permissions.default.stylesheet': 2,  # 禁止加载css
            # ====== 配置下载 =====
            'profile.default_content_settings.popups': 0,  # 取消下载确认弹窗
            # 默认下载路径
            'download.default_directory': r"C:\Users\User4\Downloads",
            "profile.default_content_setting_values.automatic_downloads": 1,  # 允许多文件下载
            "download.prompt_for_download": False,  # To auto download the file
            "download.directory_upgrade": True,
            "plugins.always_open_pdf_externally": True
        }
        option.add_experimental_option("prefs", prefs)
        browser = webdriver.Chrome(options=option)
        browser.implicitly_wait(10)  # 等待元素最多10s
        browser.set_page_load_timeout(10)  # 页面10秒后强制中断加载
        return browser
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23

    在需要下载文件时,只需要直接browser.get(网络文件URL)即可直接下载文件到配置的"C:\Users\User4\Downloads"路径下:

        browser = get_browser()
    	browser.get("http://xxxx/xxx.pdf") # 这里会直接下载
    
    • 1
    • 2
  • 相关阅读:
    C语言中的文件操作
    大一学编程怎么学?刚接触编程怎么学习,有没有中文编程开发语言工具?
    网页加载有哪些事件
    win10 环境下Python 3.8按装fastapi paddlepaddle 进行身份证及营业执照的识别2
    性格孤僻的原因和改善方法
    辣椒辣素修饰卵清蛋白 Capsaicin-ova,苍耳亭偶联鸡卵白蛋白 Xanthatin-ovalbumin
    AC修炼计划(AtCoder Regular Contest 166)
    分布式训练 最小化部署docker swarm + docker-compose落地方案
    Python基础总结(一)
    fastapi-请求与响应
  • 原文地址:https://blog.csdn.net/weixin_35757704/article/details/134534839