(Selenium)下载并重命名文件问题

问题描述 投票:-1回答:2

我正在使用selenium登录页面,并下载一些tiff文件,现在我有一个变量downloadurl,它包含我从网站上抓取的一系列网址链接。现在我使用以下代码下载文件:

 driver = webdriver.Chrome();
 driver.get(downloadurl)

我确实下载了所有文件但没有名字,例如。 img(1),img(2)...

现在我的问题是:我希望driver.get(downloadurl)根据downloadurl数组序列逐个下载文件,并根据title变量下载文件,然后下载下一个文件,并重命名...

附:我避免使用请求,因为登录过程非常复杂并且需要授权cookie。

非常感谢您的帮助!

python selenium web-scraping beautifulsoup python-requests
2个回答
0
投票

详细说明我的评论:

import os
import time

for downloadlink, uniqueName in my_list_of_links_and_names:
    driver = webdriver.Chrome();
    driver.get(downloadurl)
    time.sleep(5) # give it time to download (not sure if this is necessary)
    # the file is now downloaded
    os.rename("img(1).png", uniqueName) # the name is now changed

假设“img(1).png”将被重命名,然后下一次下载将再次作为“img(1).png”进行,这将有效。

最困难的部分是制作my_list_of_links_and_names,但如果你有数据在单独的列表中,只需将zip()放在一起。您还可以根据某些条件在每个循环中生成自己的标题...


0
投票

首先,我们将创建一个函数(Rename_file),从其文件夹中重命名下载的图像。

def Rename_file(new_name, Dl_path):  #Renames Downloaded Files in the path
    filename = max([f for f in os.listdir(Dl_path)])
    if 'image.png' in filename: #Finds 'image.png' name in said path
            time.sleep(2) #you can change the value in here depending on your requirements
            os.rename(os.path.join(Dl_path, filename), os.path.join(Dl_path, new_name+'.png')) #can be changed to .jpg etc

然后我们在url链接数组中应用此函数:

for link in downloadurl: #Will get each link in download url array
    for new_name in title:
            driver.get(link) #download the said image in link
            Rename_file(new_name,Dl_path)

示例代码:

downloadurl = ['www.sample2.com','www.sample2.com'] 
Dl_path  = "//location//of//image_downloaded"
title  = ['Title 1', 'Title 2']

def Rename_file(new_name, Dl_path):  
    filename = max([f for f in os.listdir(Dl_path)])
    if 'image.png' in filename: 
            time.sleep(2)
            os.rename(os.path.join(Dl_path, filename), os.path.join(Dl_path, new_name+'.png'))

for new_name in title:
   for link in downloadurl: 
            driver.get(link) 
            time.sleep(2)
            Rename_file(new_name,Dl_path)

我非常确定我创建的Rename函数,但我还没有用url链接数组测试过这个,因为我真的想不出我在哪里可以测试它。希望这适合你。请告诉我 :-)

© www.soinside.com 2019 - 2024. All rights reserved.