我如何确定给定的URL是否存在任何内容?

4 投票
4 回答
9104 浏览
提问于 2025-04-15 17:24

我想知道怎么用Python检查一个网址上是否有东西存在,不管是网页还是PDF文件都可以。我试过这个页面上写的解决方案 http://code.activestate.com/recipes/101276/,但是当是PDF文件或者其他东西时,它只返回了1。

4 个回答

2

在这个例子中,httplib 使用的是 HTTP/1.0,而不是 1.1,因此 Slashdot 返回的是状态码 301,而不是 200。我建议使用 urllib2,并且最好检查一下状态码 20*30*

关于 httplib文档 里提到:

它通常不直接使用——这个模块 urllib 用来处理使用 HTTP 和 HTTPS 的网址。

[...]

HTTP 类仅保留用于与 1.5.2 版本的向后兼容性。在新代码中不应该使用它。请参考在线文档了解用法。

所以没错,urllib 是在 Python 中打开网址的正确方式——一个 HTTP/1.0 的客户端在现代网络服务器上不会走得太远。

(另外,PDF 链接对我来说是可以用的。)

9

发送一个HEAD请求

import httplib 
connection = httplib.HTTPConnection(url) 
connection.request('HEAD', '/') 
response = connection.getresponse() 
if response.status == 200:
    print "Resource exists"
16

你需要检查HTTP响应代码。下面是一个Python的例子:

from urllib2 import urlopen
code = urlopen("http://example.com/").code

如果你看到4xx和5xx的代码,可能意味着你无法从这个网址获取任何东西。4xx状态代码表示客户端错误(比如“404 找不到”),而5xx状态代码表示服务器错误(比如“500 内部服务器错误”):

if (code / 100 >= 4):
   print "Nothing there."

相关链接:

撰写回答