我正在使用selenium
登录页面并下载一些tiff文件,
现在我有一个变量downloadurl
,它包含我从网站上抓取的一组URL链接。现在我正在使用以下代码下载文件:
driver = webdriver.Chrome();
driver.get(downloadurl)
我确实下载了所有文件,但没有名称,例如。 img(1),img(2)...
现在,我的问题是:我想driver.get(downloadurl)
根据downloadurl
数组序列一个接一个地下载文件,并根据title
变量将文件下载后立即重命名。数组,然后下载下一个文件,然后重命名...
建议。我避免使用请求,因为登录过程非常复杂,并且需要授权Cookie。
非常感谢您的帮助!
答案 0 :(得分: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()
在一起。您还可以根据某些条件在每个循环中生成自己的标题...
答案 1 :(得分: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
然后我们将此功能应用于网址链接数组:
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)
我很确定自己创建的重命名函数,但是我还没有真正使用一系列的URL链接进行过测试,因为我真的不知道该在哪里进行测试。希望这对您有效。请让我知道:-)