可能想在不下载HTML内容的前提下检查网页是否存在。此时我们要使用浏览器客户端发送get HEAD请求。HEAD请求和GET请求的响应一样,只是前者没有响应主体。使用HEAD请求可以获取响应首部中的元信息,而不用传输整个网页的内容。 要向www.python.org发送一个HEAD请求。这个请求不会下载首页的内容,而是检查服务器是否返回正确的响应,例如OK、FOUND和MOVED PERMANENTLY等。
import argparse
import httplib
import urlparse
import re
import urllib
DEFAULT_URL = 'http://www.python.org'
HTTP_GOOD_CODES = [httplib.OK, httplib.FOUND, httplib.MOVED_PERMANENTLY]
def get_server_status_code(url):
host, path = urlparse.urlparse(url)[1:3]
try:
conn = httplib.HTTPConnection(host)
conn.request('HEAD', path)
return conn.getresponse().status
except StandardError:
return None
if __name__ == '__main__':
parser = argparse.ArgumentParser(description='Example HEAD Request')
parser.add_argument('--url', action="store", dest="url", default=DEFAULT_URL)
given_args = parser.parse_args()
url = given_args.url
if get_server_status_code(url) in HTTP_GOOD_CODES:
print("Server: {} status is OK: ".format(url))
else:
print("Server: {} status is NOT OK!".format(url))
|