使用HTTPResponse对象
使用urllib.request模块中的urlopen方法发送HTTP请求后,服务器返回的响应内容封装在一个HTTPResponse类型的对象中,示例代码如下:
import urllib.request
response = urllib.request.urlopen('http://www.itcast.cn')
print(type(response))
执行示例代码,其输出结果为:
<class 'http.client.HTTPResponse'>
从输出结果可以看出,HTTPResponse类属于http.client模块。该类提供了获取URL、状态码、响应内容等一系列方法,常见的方法如下所示:
geturl() :用于获取响应内容的URL,该方法可以验证发送的HTTP请求是否被重新调配。
info():返回页面的元信息。
getcode() :返回HTTP请求的响应状态码。
接下来使用一段示例代码来演示这几个方法的使用,具体如下:
import urllib.request
response = urllib.request.urlopen('http://python.org')
# 获取响应信息对应的URL
print(response.geturl())
# 获取响应码
print(response.getcode())
# 获取页面的元信息
print(response.info())
执行上述示例代码,其输出结果如下:
https://www.python.org/
200
Server: nginx
Content-Type: text/html; charset=utf-8
X-Frame-Options: SAMEORIGIN
X-Clacks-Overhead: GNU Terry Pratchett
Content-Length: 48729
Accept-Ranges: bytes
Date: Wed, 23 Aug 2017 03:29:51 GMT
Via: 1.1 varnish
Age: 2915
Connection: close
X-Served-By: cache-nrt6129-NRT
X-Cache: HIT
X-Cache-Hits: 29
X-Timer: S1503458991.290683,VS0,VE0
Vary: Cookie
Strict-Transport-Security: max-age=63072000; includeSubDomains