use*_*952 12 python selenium webdriver selenium-webdriver
我看到你可以通过Webdriver设置下载文件的位置,如下所示:
fp = webdriver.FirefoxProfile()
fp.set_preference("browser.download.folderList",2)
fp.set_preference("browser.download.manager.showWhenStarting",False)
fp.set_preference("browser.download.dir",getcwd())
fp.set_preference("browser.helperApps.neverAsk.saveToDisk","text/csv")
browser = webdriver.Firefox(firefox_profile=fp)
Run Code Online (Sandbox Code Playgroud)
但是,我想知道在下载文件时是否有类似的方式给文件命名?最好,可能不是与配置文件相关的东西,因为我将通过一个浏览器实例下载~6000个文件,并且不希望每次下载都必须重新启动驱动程序.
编辑:使用所选答案建议的代码解决方案.下载每个文件后重命名该文件.
import os
os.chdir(SAVE_TO_DIRECTORY)
files = filter(os.path.isfile, os.listdir(SAVE_TO_DIRECTORY))
files = [os.path.join(SAVE_TO_DIRECTORY, f) for f in files] # add path to each file
files.sort(key=lambda x: os.path.getmtime(x))
newest_file = files[-1]
os.rename(newest_file, docName+".pdf")
Run Code Online (Sandbox Code Playgroud)
我不知道是否有一个纯 Selenium 处理程序可以实现此目的,但是当我需要对下载的文件执行某些操作时,这是我所做的。
设置一个循环,轮询您的下载目录以查找没有扩展名的最新文件.part(这表示部分下载,如果不考虑,偶尔会出错。为此设置一个计时器,以确保您不会进入在超时/其他错误的情况下导致下载无法完成的无限循环。我ls -t <dirname>在 Linux 中使用了命令的输出(我的旧代码使用commands,它已被弃用,所以我不会在这里显示它:))并得到第一个文件使用
# result = output of ls -t
result = result.split('\n')[1].split(' ')[-1]
Run Code Online (Sandbox Code Playgroud)如果while循环成功退出,目录中最顶层的文件将是您的文件,然后您可以使用它os.rename(或您喜欢的任何其他文件)对其进行修改。
可能不是您正在寻找的答案,但希望它能为您指明正确的方向。
| 归档时间: |
|
| 查看次数: |
10476 次 |
| 最近记录: |