我如何确定给定的URL是否存在任何内容?
我想知道怎么用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."
相关链接: