无法使用Python通过URL下载图像

时间:2017-05-26 13:32:42

标签: python image web-crawler urllib2

我想使用python通过其url将图像下载到本地目录。 我的方法是使用“urllib2”包下载。代码是

def download(url, filename):
f = open(filename, "wb")
headers = {'User-Agent': 'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.6) Gecko/20091201 Firefox/3.5.6'}
req = urllib2.Request(url=url, headers=headers)

f.write(urllib2.urlopen(req, timeout=10).read())
f.close()

我在大多数网址中取得了成功,但是对于某些网址,即使有超时秒数,我仍然失败了。

这些“奇怪”网址的一些失败例子:

https://s-media-cache-ak0.pinimg.com/736x/c0/95/5d/c0955d6d0ffe6145924d4e7d252cde4e.jpg https://smhttp-ssl-33667.nexcesscdn.net/manual/wp-content/uploads/2016/10/navy-suit-blue-shirt-men-look.jpg http://1.bp.blogspot.com/ExAqpPuUKM4/Uzq6mXbda2I/AAAAAAAAEL4/c_xgff8HMNU/s1600/1890361_801417276554561_1726056762_o.jpg

我用“尝试”和“激怒”来获得激动。 尝试: 下载(url,文件名) 除了例外,e: 打印例外,':',e

有几种错误:

<type 'exceptions.Exception'> : <urlopen error [Errno 65] No route to host>
<type 'exceptions.Exception'> : [Errno 54] Connection reset by peer
<type 'exceptions.Exception'> : timed out

我尝试了其他下载工具,但它们也没有用。但是当我尝试使用Chrome或Safari这样的浏览器时,图像装载得很好。

任何人都可以帮我吗?

1 个答案:

答案 0 :(得分:0)

imgRequest = urllib2.Request(imgUrl, headers=headers)
imgData = urllib2.urlopen(imgRequest).read())

但更方便的方法是使用urllib.urlretrieve

import urllib
urllib.urlretrieve("http://www.image.com/00000001.jpg", "00000001.jpg")