我尝试使用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>
答案 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”,而且现在看来也很可疑。