首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何用Selenium + Chromedrive更改保存的PDF页面名

如何用Selenium + Chromedrive更改保存的PDF页面名
EN

Stack Overflow用户
提问于 2022-04-13 13:44:03
回答 3查看 821关注 0票数 0

我有一个使用Selenium Python下载PDF页面made based on this question的脚本

我目前的目标是更改此文件的名称,使其与我选择的名称相同,然后更改保存文件的目标文件夹。

我的疑问是:我应该在哪里更改,以便用我选择的名称保存该文件?

即使对"prefs=“变量进行了更改,该文件仍然保存在默认的铬目录中。

目前,我有以下代码:

代码语言:javascript
运行
复制
chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument('--headless') # Escondendo o navegador
driver = webdriver.Chrome(options=chrome_options)
driver.maximize_window()
settings = {
    "recentDestinations": [{
            "id": "Save as PDF",
            "origin": "local",
            "account": "",
        }],
        "isLandscapeEnabled": True,
        "selectedDestinationId": "Save as PDF",
        "version": 2,
    }

prefs = {
    "printing.print_preview_sticky_settings.appState": json.dumps(settings),
    "profile.default_content_settings.popups" : 0,

    "download.name":"name_file", # ?????? ESTE CÓDIGO NÃO ALTERA O NOME

    "download.default_directory": r'C:\Users\diretorio_escolhido\\' # ESTE CÓDIGO NÃO ALTERA O DESTINO,

    "download.prompt_for_download": False,
    "download.directory_upgrade": True,
    "safebrowsing.enabled": True
}


chrome_options.add_experimental_option('prefs', prefs)
chrome_options.add_argument('--kiosk-printing')

driver = webdriver.Chrome(chrome_options=chrome_options)
driver.get(name_Object.url)
sleep(5) # Pausa para carregar os dados
driver.execute_script('window.print();')

print('Gerou o PDF')
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2022-04-17 11:50:17

download.default_directory更改为savefile.default_directory,以便您的保存位置工作。

遗憾的是,我认为我们无法在下载前更改文件名,但是您可以通过重命名下载文件夹中的最新文件来rename your file after download

代码语言:javascript
运行
复制
import os    
import shutil
download_folder = "C:\\Users\\username\\Downloads\\Test"
filename = max([download_folder + "\\" + f for f in os.listdir(Initial_path)],key=os.path.getctime)
shutil.move(filename,os.path.join(Initial_path,r"newPDFName.pdf"))
票数 0
EN

Stack Overflow用户

发布于 2022-08-27 01:54:45

我也面临着同样的问题。目前,我找到了以下解决办法:

代码语言:javascript
运行
复制
driver.execute_script("document.title = \'{}\'".format(filename))
票数 1
EN

Stack Overflow用户

发布于 2022-09-23 06:29:21

这个答案是使用上面发布的vimuth's建议,它完全适用于我自己使用Python3.9.4

代码语言:javascript
运行
复制
chrome_driver_path = ChromeDriverManager().install()
service = Service(chrome_driver_path)
service.start()

options = webdriver.ChromeOptions()
options.add_argument('--start-maximized')

settings = {
              "recentDestinations": [{
                    "id": "Save as PDF",
                    "origin": "local",
                    "account": "",
                }],
                "selectedDestinationId": "Save as PDF",
                "version": 2
            }
        
    prefs = {'printing.print_preview_sticky_settings.appState': json.dumps(settings), 'savefile.default_directory': download_path }

    options.add_experimental_option('prefs', prefs)
    options.add_argument('--kiosk-printing')

    driver = webdriver.Chrome(chrome_driver_path, options=options)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71858571

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档