python - 如何知道 urllib.urlretrieve 是否成功?

标签 python networking urllib

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/

相关文章:

Python 安全字典键访问

python - google ml engine scale-tier 未在远程分布式训练中运行

python - Paramiko 在身份验证期间挂起,当由 unittest runner 运行时

linux - ubuntu网卡问题

android - 如何仅以编程方式为我的应用禁用移动数据

java - Java 和 C/C++ 程序之间的命名管道

python Pandas : Create new rows from values of a List Column

python - 如何下载和读取带有通用换行符的 URL?

python - 无法从 url 读取压缩文件

python - 将 cURL 转换为 urllib 请求