如何通过Python urllib.urlretrieve()在flickr中下载图像?

时间:2011-10-13 05:02:16

标签: python urllib flickr

我有一个问题,当从flickr.com下载图像时,python函数urllib.urlretrieve()总是返回错误

[Errno socket error] (10060, 'Operation timed out')

例如:

import urllib

url = "http://farm3.static.flickr.com/2659/4207030547_23e6000d29_o.gif"
urllib.urlretrieve(url,"C://tmp.gif")

我是中国人,我不知道“超时”是否与中国互联网的速度有关。

现在它在击败.gif时失败了!我该怎么办? THX ~~~

任何建议都表示赞赏~~~

4 个答案:

答案 0 :(得分:1)

我无法重现。

完全相同的代码下载了图片。

我正在使用python 2.7

它必须与服务器(当时)或您的互联网连接。

enter image description here

答案 1 :(得分:0)

请考虑使用urllib2库,它允许您指定超时(在Python 2.6 +中)。

答案 2 :(得分:0)

您无法从flickr下载图像的原因是,中国有一个怪异的墙在挡住您!您可以尝试使用在您的计算机上全局运行的VPN(这样python程序也可以在此VPN环境下运行), 或者,

您将代理设置为requests,然后您可以从那些被中国屏蔽的网站上下载图片。

import requests

proxies = {
 “http”: “http://10.10.10.10:8000”,   # just an example
 “https”: “http://10.10.10.10:8000”,  # just an example
}
r = requests.get(“http://example_url.com”, proxies=proxies)

答案 3 :(得分:0)

尝试“获取”方法。我最近不得不做同样的事情,并通过以下方法解决了这个问题:

import requests
url = "https://www.python.org/static/community_logos/python-logo-master-v3-TM.png"
try:
    r = requests.get(url,allow_redirects = True)
    if(r.status_code == 200):
        open("Image.jpg","wb").write(r.content)
    elif(r.status_code == 404):
        print("Image not found at the URL")
    else:
        print("Unknown error occurred.")
except:
    print("Could not establish connection with the site URL.")