requests库入门-12-response对象的API
前面文章我们一直在介绍请求,各种请求方法的使用,作为请求回来的response对象,没有过多介绍。这篇就来介绍response的对象和常用的API。我们不管是接口测试还是爬虫,最关心的是请求回来的数据的提取。本文介绍的这些方法,能够让你完成这个数据解析和提取的目的。
1. HTTP状态码
前面我们也输出过response.status_code,如果请求正常,返回的是一个200这个数字。除了200,我们有必要了解一些常见的HTTP状态码的含义,这里我们打开wiki,地址是https://zh.wikipedia.org/wiki/HTTP%E7%8A%B6%E6%80%81%E7%A0%81,我们主要要学会这些代码含义。
我们大致要知道,1xx表示消息,一般很少用到。2xx表示请求成功,最常见的是200。3xx表示重定向。4xxx表示请求错误,例如400一般表示参数错误,404表示请求的内容在服务器上不存在。5xx表示服务器错误,常见的有,500,服务器内部错误,503访问过载,504网关超时。其他的有兴趣自己去看看。
2. Response对象的所有API
Response对象,提供了很多API,供我们使用,达到不同的目的,主要分一下两组。
左边:
第一个status_code,返回的是状态码。headers是用来查看相应头部内容。url是输出当前请求地址。history是给出相应调整历史记录。elapsed是记录得到这个响应花费的时间。
右边:
第一个encoding是获取响应的编码类型,一般是utf-8。raw是直接读取该响应数据。content和text文件有一点区别,content是Batch treatment文件类型,输出前面会有一个b,text是转换unicode格式输出。json就是采用json格式输出响应内容,这个json我们用得比较多。
3.举例
1)左侧API演示
import requests
r = requests.get('https://api.github.com')
print(r.status_code)
print(r.reason)
print(r.headers)
print(r.url)
print(r.history)
print(r.elapsed)
print(r.request)
输出内容:
200
OK
{'Date': 'Tue, 29 Aug 2017 09:38:16 GMT', 'Content-Type': 'application/json; charset=utf-8',
'Transfer-Encoding': 'chunked', 'Server': 'GitHub.com', 'Status': '200 OK',
'X-RateLimit-Limit': '60', 'X-RateLimit-Remaining': '59', 'X-RateLimit-Reset': '1504003096',
'Cache-Control': 'public, max-age=60, s-maxage=60', 'Vary': 'Accept, Accept-Encoding',
'ETag': 'W/"7dc470913f1fe9bb6c7355b50a0737bc"', 'X-GitHub-Media-Type': 'github.v3; format=json',
'Access-Control-Expose-Headers': 'ETag, Link, X-GitHub-OTP, X-RateLimit-Limit,
X-RateLimit-Remaining, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes,
X-Poll-Interval', 'Access-Control-Allow-Origin': '*', 'Content-Security-Policy': "default-src
'none'", 'Strict-Transport-Security': 'max-age=31536000; includeSubdomains; preload',
'X-Content-Type-Options': 'nosniff', 'X-Frame-Options': 'deny', 'X-XSS-Protection': '1; mode=block',
'X-Runtime-rack': '0.011608', 'Content-Encoding': 'gzip',
'X-GitHub-Request-Id': '1030:2E7FE:11B2A53:169E501:59A53606'}
https://api.github.com/
[]
0:00:02.328633
<PreparedRequest [GET]>
上面可以看到该请求得到respons数据,花费了2.328633秒,这个在国内服务器上,这个性能是不能接受的。
2)右侧API演示
import requests
r = requests.get('https://api.github.com')
print(r.encoding)
print(r.raw)
print(r.content)
print(r.text)
print(r.json())
运行输出结果
上一篇: stm32霍尔编码器