【问题标题】:Save Images from Url's stored in List - Python Simple从存储在列表中的 URL 中保存图像 - Python 简单
【发布时间】:2014-09-14 22:33:44
【问题描述】:

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

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 中的 url 是完整的 url。如果打印,此列表将回读如下内容:

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,然后以同样的方式递增output 中的列表编号。

【问题讨论】:

    标签: python image list url save


    【解决方案1】:

    我喜欢使用 Python 的enumerate 来获取除值之外的可迭代对象的索引。您可以使用它来自动增加您给输出文件名的值。像这样的东西应该可以工作:

    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,因为它是从零开始的。

    另见:

    【讨论】:

    • 下载似乎不是问题。因为我在此之前使用了与urllib2.urlopen 相关的身份验证。用于打开图片网址。但是你发布的那两篇文章是我最初发现如何做到这一点的原始方式。我会试试你上面写的!谢谢!
    • 你先生是个天才@mike-driscoll。只出现了一个问题,那就是 listimg(s)_urls 中缺少一个 s。除此之外,它完全按照想要的方式工作。保存所有图像!一页保存了 27 个。我尝试了另一个页面,它保存了 4 个。太棒了。
    猜你喜欢
    • 1970-01-01
    • 2015-07-25
    • 2016-05-09
    • 2017-08-10
    • 2018-10-31
    • 1970-01-01
    • 2011-07-24
    • 1970-01-01
    • 2014-05-25
    相关资源
    最近更新 更多