urllib.urlretrieve
即使远程http服务器上不存在该文件,它也会静默返回,它只是将一个html页面保存到命名文件中。例如:
urllib.urlretrieve('http://google.com/abc.jpg', 'abc.jpg')
只是静默返回,即使 google.com 服务器上不存在 abc.jpg,生成的 abc.jpg
也不是有效的 jpg 文件,它实际上是一个 html 页面。我猜返回的 header (httplib.HTTPMessage 实例)可用于实际判断检索是否成功,但我找不到 httplib.HTTPMessage
的任何文档。
谁能提供一些关于这个问题的信息?
最佳答案
如果可能,请考虑使用 urllib2
。它比 urllib
更高级和易于使用。
您可以轻松检测任何 HTTP 错误:
>>> import urllib2
>>> resp = urllib2.urlopen("http://google.com/abc.jpg")
Traceback (most recent call last):
<<MANY LINES SKIPPED>>
urllib2.HTTPError: HTTP Error 404: Not Found
resp
实际上是 HTTPResponse
对象,你可以用它做很多有用的事情:
>>> resp = urllib2.urlopen("http://google.com/")
>>> resp.code
200
>>> resp.headers["content-type"]
'text/html; charset=windows-1251'
>>> resp.read()
"<<ACTUAL HTML>>"
关于python - 如何知道 urllib.urlretrieve 是否成功?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/987876/