我有一些图片的网址列表,我想下载它们 import urllib
links = ['http://www.takamine.com/templates/default/images/gclassical.png',
'https://dk1xgl0d43mu1.cloudfront.net/user_files/esp/product_images/000/010/120/large.png?1389980652',
'https://dk1xgl0d43mu1.cloudfront.net/user_files/esp/product_images/000/020/676/large.png?1453396324']
#urllib.urlretrieve('http://www.takamine.com/templates/default/images/gclassical.png','image.jpg')
for i in range(0,4):
S1 = 'image'
S2 = '.png'
name = list()
x = S1 + str(i) + S2
name.append(x)
for q in links:
urllib.urlretrieve(q,name)
我理解如何一次检索一个....当我尝试这个代码时,我得到了这个错误
Traceback(最近一次调用最后一次):File" C:/ Python27 / metal memes / test1.py",第17行,in urllib.urlretrieve(q,name)文件" C:\ Python27 \ lib \ urllib.py",第98行,在urlretrieve中 返回opener.retrieve(url,filename,reporthook,data)文件" C:\ Python27 \ lib \ urllib.py",第249行,检索 tfp = open(filename,' wb')TypeError:强制转换为Unicode:需要字符串或缓冲区,找到列表
任何答案,解释都表示赞赏
答案 0 :(得分:2)
第一个for
循环是为了创建一个文件名列表image0.png到image3.png,对吧?!失败并生成一个只包含一个元素的列表('image3.png'),因为您重新初始化循环内的列表。你必须在循环之前初始化它一次。如果在循环后放置print name
第二个问题是,您将列表传递给urllib.urlretrieve
你的问题在这方面还不清楚,但你想从每个给定的网址下载4张名为image0.png ... image3.png的图片吗?这就是你的代码的样子。
如果是,则需要对文件名列表中的名称进行嵌套循环。我相应地修改了下面的代码。 但是你的网址已经包含了一个文件名,所以我不确定这是什么意思。
links = ['http://www.takamine.com/templates/default/images/gclassical.png',
'https://dk1xgl0d43mu1.cloudfront.net/user_files/esp/product_images/000/010/120/large.png?1389980652',
'https://dk1xgl0d43mu1.cloudfront.net/user_files/esp/product_images/000/020/676/large.png?1453396324']
#urllib.urlretrieve('http://www.takamine.com/templates/default/images/gclassical.png','image.jpg')
# create a list of filenames
# either this code:
names = list()
for i in range(0,4):
S1 = 'image'
S2 = '.png'
x = S1 + str(i) + S2
names.append(x)
# or, as suggested in the comments, much shorter using list comprehension:
names = ["image{}.png".format(x) for x in range(4)]
for q in links:
for name in names:
urllib.urlretrieve(q,name)