如何使用python确定网络中是否存在任何给定网址?它可以是一个html页面或一个pdf文件,不应该是件事。 香港专业教育学院尝试过本页中的解决方案http://code.activestate.com/recipes/101276/ 但它只是在它的pdf文件或任何东西时返回1。
答案 0 :(得分:15)
您需要检查HTTP响应代码。 Python示例:
from urllib2 import urlopen
code = urlopen("http://example.com/").code
4xx和5xx代码可能意味着您无法从此网址获取任何内容。 4xx状态代码描述客户端错误(如“404 Not found”)和5xx状态代码描述服务器错误(如“500 Internal server error”):
if (code / 100 >= 4):
print "Nothing there."
链接:
答案 1 :(得分:9)
发送HEAD请求
import httplib
connection = httplib.HTTPConnection(url)
connection.request('HEAD', '/')
response = connection.getresponse()
if response.status == 200:
print "Resource exists"
答案 2 :(得分:2)
该示例中的httplib
使用HTTP / 1.0而不是1.1,因此Slashdot返回状态代码301而不是200.我建议使用urllib2
,也可能检查代码20*
和30*
。
httplib
州的documentation:
通常不直接使用 - 模块
urllib
使用它来处理使用HTTP和HTTPS的URL。[...]
仅保留
HTTP
类以向后兼容1.5.2。它不应该用在新代码中。请参阅在线文档字符串以了解用法。
是的。 urllib
是在Python中打开URL的方式 - 在现代Web服务器上,HTTP / 1.0客户端不会走得太远。
(另外,PDF链接适用于我。)
答案 3 :(得分:0)
此解决方案返回1,因为服务器正在发送200 OK响应。
您的服务器出了问题。如果文件不存在,它应返回404。