【问题标题】:Download flickr images of specific url下载特定 url 的 flickr 图片
【发布时间】:2014-02-10 09:29:26
【问题描述】:

我想从 flickr 下载一些图片。例如,我有这个链接http://www.flickr.com/photos/tonynetone/3717759677/,我想在我的磁盘中保存这个具有特定名称的大尺寸图像。 link 中的文档对我没有太大帮助。你能请人举一个python代码的例子吗?

谢谢。

PS:窗户

【问题讨论】:

    标签: python flickr


    【解决方案1】:

    您需要纯 Python 解决方案吗?你喜欢这样的 Bash 单线器吗?

    $ curl http://www.flickr.com/photos/tonynetone/3717759677/ | egrep 'http:\\/\\/[^"]*jpg' -o | sed -e 's@\\@@g'
      % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                     Dload  Upload   Total   Spent    Left  Speed
    100  177k    0  177k    0     0   164k      0 --:--:--  0:00:01 --:--:--  309k
    http://farm3.staticflickr.com/2567/3717759677_4a520a1dbb_s.jpg
    http://farm3.staticflickr.com/2567/3717759677_4a520a1dbb_q.jpg
    http://farm3.staticflickr.com/2567/3717759677_4a520a1dbb_t.jpg
    http://farm3.staticflickr.com/2567/3717759677_4a520a1dbb_m.jpg
    http://farm3.staticflickr.com/2567/3717759677_4a520a1dbb.jpg
    http://farm3.staticflickr.com/2567/3717759677_97b2ab3b4d_o.jpg
    

    顺便说一句,您提到的照片没有“大”选项

    也许您的意思是“原创”(_o)?

    更新

    import urllib2, re
    
    def download(url, save_name):
        html = urllib2.urlopen(url).read()
        img_url = re.findall(r'http:[^" \\:]*_b\.jpg', html)[0]
    
        with open(save_name, "wb") as fp:
            fp.write(urllib2.urlopen(img_url).read())
    
    download('http://www.flickr.com/photos/91440301@N03/9679566882/sizes/l/', 'elephant.jpg')
    

    使用说明

    1. 如果没有“大”选项(文件名以_b.jpg结尾的照片),它只会引发异常(可能是IndexError。)请自行捕捉。

    2. 仅支持.jpg

    3. 请自行确定save_name

    【讨论】:

    • 是的,在这个特定的图像中没有大的选项。不幸的是,我不是 linux 用户。
    • 好吧,如果你没有Linux工具,我可以给你写Python,但是缺少“大”怎么办……你就想放弃吗?
    • 在某些图像中,可以选择大图像。图片可以是一个选项。
    • 比如看这个image,有大图可以下载。如果可以用python代码python代码很棒!
    【解决方案2】:

    我通常下载如下图片

    import urllib2
    
    def get_image(url, image_save_name):
        try:
            image = urllib2.urlopen(url).read()
            with open(image_save_name + '.' + url.split('.')[-1], 'wb') as image_file:
                image_file.write(image)
                image_file.close()
        except Exception as e:
            print e
    
    get_image('http://farm3.staticflickr.com/2277/2046712361_77f514172f_z.jpg', 'image_save_name')
    

    【讨论】:

    • 我没有完整链接 *.jpg 只是上面的链接。另外,我认为使用此代码您不知道您下载的图像的大小。
    • 很容易去链接学习源代码(使用萤火虫)查看每个不同大小的图像都有一个唯一标识符的模式(例如farm3.staticflickr.com/2277/2046712361_77f514172f_n.jpg)。下载页面flickr.com/photos/tonynetone/3717759677用漂亮的汤报废页面获取您需要的图片大小的链接并下载图片
    • @Sar009 我建议您从手动调用close() 迁移到with open(path) as var: 习惯用法。
    • @nodakai 非常感谢你。我一直在想检查 open 和 open 之间有什么区别,但我总是错过了两者是否还有其他区别
    • @Sar009 (1) 即使抛出异常,您也保证close() 文件 (2) 文件变量的范围明显清晰;毕竟切换到with 语法几乎没有缺点。我认为这就像骑自行车;一旦你习惯了它,你就会觉得它比以前更舒服。顺便说一句,我喜欢您将在线图像文件的文件扩展名复制到image_save_name
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-23
    相关资源
    最近更新 更多