selenium控制文件下载位置

这篇具有很好参考价值的文章主要介绍了selenium控制文件下载位置。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

selenium控制文件下载位置

我们在自动化下载文件的时候势必存在一种需求: 通过chrome将文件保存到指定位置

1. google窗口实现

​ 配置'prefs'将文件下载到指定位置, 并通过判断文件的大小来判断文件是否下载完成

import os
import time

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.by import By

options = Options()
prefs = {'profile.default_content_settings.popups': 0, 'download.default_directory': os.getcwd() + '\\download'}
options.add_experimental_option("prefs", prefs)
web = webdriver.Chrome(options=options)
web.get("https://pypi.org/project/selenium/#files")
time.sleep(5)
web.find_element_by_xpath('//*[@id="files"]/div/div[2]/a[1]').click()
# 获取下载文件的路径
download_dir = os.getcwd() + '\\download'
# 注意需要和 Chrome 浏览器设置的下载路径一致

# 文件名
file_name = 'selenium-4.9.0.tar.gz'

download_file_path = os.path.join(download_dir, file_name)

# 等待文件下载完成
wait = WebDriverWait(web, timeout=30)
wait.until(lambda driver: os.path.exists(download_file_path))

# 获取文件的初始大小
init_size = os.path.getsize(download_file_path)

# 等待指定时间,再次检查文件大小是否发生变化
time.sleep(2)
while True:
    cur_size = os.path.getsize(download_file_path)
    if cur_size == init_size:
        break
    else:
        init_size = cur_size
        time.sleep(2)

# 文件大小不再发生变化,认为下载完成
web.close()

2. 基于无头浏览器实现

​ 当我们需要将selenium部署到centos服务器上运行的时候, 就会存在无法打开google的情况, 此时我们必须要配置无头浏览器, 这时候想下载文件到指定位置就不是刚才配置一下'prefs', 因为我们在无头浏览器中是无法导出下载管理的可视化窗口的, 这意味着'prefs'将没有作用, 所以我们应该怎么做?

基于无头浏览器将文件下载到指定目录: 
    1. 配置无头浏览器并下载文件到google指定目录(配置options)
    2. 通过定时等待判断文件是否下载完成(os模块)
    3. 关闭浏览器

下面是代码部分:文章来源地址https://www.toymoban.com/news/detail-437064.html

import os
import time

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.by import By

# # 设置 ChromeOptions 配置
options = Options()
options.add_argument('--no-sandbox')
options.add_argument('--disable-dev-shm-usage')
options.add_argument('--headless')
options.add_argument('blink-settings=imagesEnabled=false')
web = webdriver.Chrome(options=options)
# 配置浏览器
web.command_executor._commands["send_command"] = ("POST", '/session/$sessionId/chromium/send_command')
params = {'cmd': 'Page.setDownloadBehavior',
          'params': {'behavior': 'allow', 'downloadPath': r"%s" % os.path.join(os.getcwd(), 'download')}}
web.execute("send_command", params=params)

web.get("https://pypi.org/project/selenium/#files")
web.find_element(By.XPATH, '//*[@id="files"]/div/div[2]/a[1]').click()

# 等待下载完成
# 通过文件大小变化(在上面)或者定时等待的方式均可判断
# 这里用定时等待的方式
download_file = os.path.join('C://Users//86183//Downloads', "selenium-4.9.0.tar.gz")
while not os.path.exists(download_file):
    time.sleep(2)

# # 移动文件到指定的目录
# destination = os.path.join(os.getcwd(), 'download')
# shutil.move(download_file, destination)

# 关闭浏览器
web.quit()

到了这里,关于selenium控制文件下载位置的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • UE5 Android下载zip文件并解压缩到指定位置

    一、下载是使用市场的免费插件 二、解压缩是使用市场的免费插件 三、Android路径问题 windows平台下使用该插件没有问题,只是在Android平台下,只有使用绝对路径才能进行解压缩,所以如何获得Android下的绝对路径?增加C++文件获得Android平台的文件路径。 四、首先是利用Blu

    2024年02月06日
    浏览(43)
  • python + selenium 自动下载浏览器驱动文件

    python + selenium 自动下载浏览器驱动文件

    2024年02月02日
    浏览(52)
  • 解决selenium遇到火狐浏览器自动打开下载文件

       这个图标发生变化说明可以了,不用在意后面的文字,这样设置就已经生效!

    2024年02月11日
    浏览(69)
  • 下载PDF文件时的Selenium选项设置详解

    使用Selenium下载PDF文件时,设置下载选项是一个重要的步骤,它可以确保文件被正确保存,并在需要时进行自动打开或禁用内置PDF查看器。本文将介绍一些常见的选项设置,以帮助你顺利下载和处理PDF文件。 在使用Selenium下载文件时,我们可以通过设置webdriver.ChromeOptions()中的

    2024年02月05日
    浏览(65)
  • selenium设置(有界面/无界面浏览器)下载文件路径

    配置方法是添加 download.default_directory ,如: 对于无界面浏览器,为了安全,默认是不允许在无界面下进行下载文件到本地的操作的,但是可以通过配置进行修改,详细请参考:https://stackoverflow.com/questions/45631715/downloading-with-chrome-headless-and-selenium

    2024年02月17日
    浏览(37)
  • 华为手机 鸿蒙系统 或者安卓系统的百度网盘下载的文件保存在手机什么位置如何查看

    华为手机 鸿蒙系统 或者安卓系统的百度网盘下载的文件保存在手机什么位置如何查看  连接电脑后一般在这里位置 计算机Mate 20 Pro (UD)内部存储DownloadBaiduNetdisk 也就是用usb(数据线,不是充电线,要四心的 )连接手机后,打开手机盘,download目录  

    2024年04月13日
    浏览(200)
  • SQL Server提示:安装程序无法与下载服务器联系。请提供 Microsoft机器学习服务器安装文件的位置。。。。

    报错截图: 今天在安装SQL Server的过程中,出现问题:安装程序无法与下载服务器联系。请提供 Microsoft机器学习服务器安装文件的位置,然后单击“下一步”,可从以下位置下载安装文件。 解决方法: 1、首先按照他给的链接进行下载需要的文件(需要啥文件可以看自己那边

    2024年02月11日
    浏览(56)
  • cmd控制台通过sftp命令下载服务器文件

    因为同事电脑没有远程连接工具,所以使用cmd连接远程,打开cmd控制台。 1.sftp连接服务器 如果远程主机的 IP 是 192.168.1.100或者是域名www.test.cn,用户名是user,在命令行模式下输入:sftp user@192.168.1.100或者 user@www.test.cn。回车,根据提示输入密码。   2.如果下载的是文件夹,可

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

    在初始化浏览器的时候,添加以下配置即可: 使用如下程序初始化,可以避免很多问题: 在需要下载文件时,只需要直接 browser.get(网络文件URL) 即可直接下载文件到配置的 \\\"C:UsersUser4Downloads\\\" 路径下:

    2024年02月04日
    浏览(64)
  • 【 Python足彩网站赔率数据文件自动下载(Tkinter+BeautifulSoup+Selenium隐藏浏览器界面,双线程)】

    朋友为了分析足彩的实时赔率,需要每隔一段时间自动下载网站上的excel数据。因此开发了这款软件。 总共就3个代码块,以下是完整源代码。 1.第一步 :创建应用程序界面 2第二步 :获所有需要下载的URL并添加到列表。循环列表。 3第三步 :下载Excel文件。因为是无头浏览器

    2024年01月18日
    浏览(118)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包