从存储在List - Python Simple中的Url保存图像

时间:2014-07-23 16:09:39

标签: python image list url save

使用列表我可以将所有网址从webage中获取到列表imgs_urls中。我现在需要如何保存来自webage的所有图像,图像数量会发生变化。

imgs_urls列表中,根据我运行的报告,列表中可以有任意数量的网址。目前,这只能调用一个列表项。

html = lxml.html.fromstring(data)
imgs = html.cssselect('img.graph')
imgs_urls = []
for x in imgs:
   imgs_urls.append('http://statseeker%s' % (x.attrib['src']))

lnum = len(imgs_urls)
link = urllib2.Request(imgs_urls[0])
output = open('sla1.jpg','wb')
response = urllib2.urlopen(link)
output.write(response.read())
output.close()

lsit中的网址是完整网址。如果打印出来,这个列表会回读这样的东西:

img_urls = ['http://site/2C2302.png','http://site/2C22101.png','http://site/2C2234.png']

我认为这样的事情的基本前提是什么样的,但我知道的语法不正确:

lnum = len(imgs_urls)
link = urllib2.Request(imgs_urls[0-(lnum)])
output = open('sla' + (0-(lnum)).jpg','wb')
response = urllib2.urlopen(link)
output.write(response.read())
output.close()

然后会保存所有图像,文件看起来像这样:

sla1.png,sla2.png,sla3.png,sla4.png

有什么想法吗?我认为一个循环可能会解决这个问题,但我不知道如何在sla.jpg中增加保存lnum整数的次数,然后在{{1}中增加列表编号同样的方式。

1 个答案:

答案 0 :(得分:0)

除了值之外,我喜欢使用Python的enumerate来获取iterable的索引。您可以使用它来自动递增您为输出的文件名赋予的值。这样的事情应该有效:

import urllib2

img_urls = ['http://site/2C2302.png','http://site/2C22101.png','http://site/2C2234.png']

for index, url in enumerate(img_urls):
    link = urllib2.urlopen(url)
    try:
        name = "sla%s.jpg" % (index+1)
        with open(name, "wb") as output:
            output.write(link.read())
    except IOError:
        print "Unable to create %s" % name

您可能还需要捕获其他异常,例如权限错误,但这应该可以帮助您入门。请注意,我将索引增加1,因为它是从零开始的。

另见: