【发布时间】:2014-02-10 09:29:26
【问题描述】:
我想从 flickr 下载一些图片。例如,我有这个链接http://www.flickr.com/photos/tonynetone/3717759677/,我想在我的磁盘中保存这个具有特定名称的大尺寸图像。 link 中的文档对我没有太大帮助。你能请人举一个python代码的例子吗?
谢谢。
PS:窗户
【问题讨论】:
我想从 flickr 下载一些图片。例如,我有这个链接http://www.flickr.com/photos/tonynetone/3717759677/,我想在我的磁盘中保存这个具有特定名称的大尺寸图像。 link 中的文档对我没有太大帮助。你能请人举一个python代码的例子吗?
谢谢。
PS:窗户
【问题讨论】:
您需要纯 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')
使用说明
如果没有“大”选项(文件名以_b.jpg结尾的照片),它只会引发异常(可能是IndexError。)请自行捕捉。
仅支持.jpg
请自行确定save_name。
【讨论】:
我通常下载如下图片
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 只是上面的链接。另外,我认为使用此代码您不知道您下载的图像的大小。
close() 迁移到with open(path) as var: 习惯用法。
close() 文件 (2) 文件变量的范围明显清晰;毕竟切换到with 语法几乎没有缺点。我认为这就像骑自行车;一旦你习惯了它,你就会觉得它比以前更舒服。顺便说一句,我喜欢您将在线图像文件的文件扩展名复制到image_save_name