HTTP响应码、响应头、网址、重定向
可以通过response对象的getcode()方法获得状态码,getheaders()方法获得响应头,geturl()方法获得网址。
例子1:
import socketimport urllib.requestimport urllib.error
socket.setdefaulttimeout(5)
try:
res = urllib.request.urlopen('https://cn.bing.com/?mkt=zh-CN',timeout=5)
# res =
urllib.request.urlopen('https://www.google.com.hk/')
print(res.getcode()) # 响应状态码
print(res.getheaders()) # 响应头
print(res.geturl()) # 网址except socket.timeout:
print('请求超时')
结果:
例子2:
HTTP的302状态码是临时重定向状态码表明请求的资源被暂时的移动到了由该 HTTP 响应的响应头 Location 指定的 URL 上。浏览器会重定向到这个 URL,但是搜索引擎不会对该资源的链接进行更新 ;而301是永久重定向状态码搜索引擎会更新该资源的链接。
HTTP1.1之后出现了303、307、308都是重定向状态码,其中303允许在重定向时改变请求方法但是禁止被缓存,307和308不允许重定向时改变请求方法。
如何判断是否出现重定向了?
可以通过检查response的url和request的url是否一致即可。
import socketimport urllib.requestimport urllib.error
try:
# res =
urllib.request.urlopen('https://cn.bing.com/?mkt=zh-CN',timeout=5)
res =
urllib.request.urlopen('https://www.ali213.net/',timeout=5)
print(res.getcode()) # 响应状态码
isRedirected =
res.geturl() == 'https://www.ali213.net/'
print(isRedirected)except socket.timeout:
print('请求超时')
结果:
标签:HTTP,重定向,res,urllib,响应,https,print From: https://blog.51cto.com/u_16427934/12321111