python:检查是否存在 jpg 的 url

新手上路,请多包涵
阅读 450
2 个回答
>>> import httplib
>>>
>>> def exists(site, path):
...     conn = httplib.HTTPConnection(site)
...     conn.request('HEAD', path)
...     response = conn.getresponse()
...     conn.close()
...     return response.status == 200
...
>>> exists('http://www.fakedomain.com', '/fakeImage.jpg')
False

如果状态不是 200,则资源不存在于 URL 中。这并不意味着它完全消失了。如果服务器返回 301 或 302,这意味着该资源仍然存在,但位于不同的 URL。要更改处理这种情况的功能,只需将状态检查行更改为 return response.status in (200, 301, 302)

原文由 tikiboy 发布,翻译遵循 CC BY-SA 3.0 许可协议

下面的代码等同于 tikiboy 的答案,但是使用了一个高级且易于使用的 请求 库。

 import requests

def exists(path):
    r = requests.head(path)
    return r.status_code == requests.codes.ok

print exists('http://www.fakedomain.com/fakeImage.jpg')

requests.codes.ok 等于 200 ,因此您可以根据需要替换确切的状态代码。

requests.head 如果服务器没有响应,可能会抛出 异常,因此您可能需要添加一个 try-except 结构。

此外,如果您还想包含代码 301302 ,请考虑代码 303 ,特别是如果您 取消引用 URI 中的 数据 引用资源。一个 URI 可能代表一个人,但你不能下载一个人,所以服务器会使用 303 重定向 将你重定向到一个描述这个人的页面。

原文由 Mirzhan Irkegulov 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题