2017-05-26 53 views
0

我想使用python通过其url下载图像到本地目录。 我的方法是使用“urllib2”包进行下载。代码是未能通过URL下载图像与Python

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() 

我成功了大部分的url,但对于某些网址我失败了,即使有更多的超时秒数。

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

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

我用“尝试”和“excpet”来获得错误时抛出。 尝试: 下载(网址,文件名),除了异常 ,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这样的浏览器时,这些图像的加载效果很好。

任何人都可以帮助我吗?

+0

使用,看起来就像你正在网络问题或有问题的远端。我试图使用请求下载它们,它只是从我的位置工作。 – jnvilo

回答

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")