我正在使用selenium
登录页面,并下载一些tiff文件,现在我有一个变量downloadurl
,它包含我从网站上抓取的一系列网址链接。现在我使用以下代码下载文件:
driver = webdriver.Chrome();
driver.get(downloadurl)
我确实下载了所有文件但没有名字,例如。 img(1),img(2)...
现在我的问题是:我希望driver.get(downloadurl)
根据downloadurl
数组序列逐个下载文件,并根据title
变量下载文件,然后下载下一个文件,并重命名...
附:我避免使用请求,因为登录过程非常复杂并且需要授权cookie。
非常感谢您的帮助!
详细说明我的评论:
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()
放在一起。您还可以根据某些条件在每个循环中生成自己的标题...
首先,我们将创建一个函数(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链接数组测试过这个,因为我真的想不出我在哪里可以测试它。希望这适合你。请告诉我 :-)