如何使用python3.7中的'urllib.request'从网络正确下载图像

时间:2019-02-04 04:28:05

标签: urllib python-3.7

我尝试使用python 3.7从网络上下载图像。但是我的代码中出现了一些错误,我无法理解代码中的错误以及如何恢复它。 我使用PyCharm 3.4和MacOS X:

我的代码:

import urllib.request
urllib.request.urlretrieve("http://www.digimouth.com/news/media/2011/09/google-logo.jpg", "local-filename.jpg")

错误

urllib.error.URLError: <urlopen error [Errno 65] No route to host>

2 个答案:

答案 0 :(得分:0)

您提供的代码适用于其他图片,例如:

import urllib.request
urllib.request.urlretrieve("https://www.google.com/url?sa=i&source=images&cd=&cad=rja&uact=8&ved=2ahUKEwi7nsiIqqXgAhUnuqQKHY6uDa4QjRx6BAgBEAU&url=https%3A%2F%2Fen.wikipedia.org%2Fwiki%2FGiraffe&psig=AOvVaw1g8lkjuT8Ly2FxVhGp1vp6&ust=1549481373274429", "giraffe.jpg")

问题出在您的链接上,因为http://www.digimouth.com/news/media/2011/09/google-logo.jpg似乎已死。即使wget http://www.digimouth.com/news/media/2011/09/google-logo.jpg在终端中也不起作用,Chrome也无法正确打开该链接。因此,我建议选择其他图像。

有关SSL错误,请参见:https://stackoverflow.com/a/28052583/8565438

答案 1 :(得分:0)

只需使用urllib.request.urlretrieve(url=link, filename=output),您的方法是正确的。如果url是图像,则下载图像。如果url是HTML文件,则下载HTML文件。

您的错误urllib.error.URLError: <urlopen error [Errno 65] No route to host>是因为您的链接已损坏urlretrieve仅适用于未中断的链接。此外,urlretrieve被认为属于旧版界面。

不幸的是,您无法采取任何措施来修复URL“ http://www.digimouth.com/news/media/2011/09/google-logo.jpg”,而且现在看来也很可疑。