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

问题描述 投票:1回答:2

我尝试使用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>
urllib python-3.7
2个回答
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


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”,并且现在看来也可疑。

© www.soinside.com 2019 - 2024. All rights reserved.