如何确定给定网址上是否存在任何内容

时间:2009-12-27 14:37:03

标签: python http url

如何使用python确定网络中是否存在任何给定网址?它可以是一个html页面或一个pdf文件,不应该是件事。 香港专业教育学院尝试过本页中的解决方案http://code.activestate.com/recipes/101276/ 但它只是在它的pdf文件或任何东西时返回1。

4 个答案:

答案 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。