流式请求:有的接口返回值包含有多个结果,而非常规的返回一个结果。比如查询接口,其返回值为排在前面固定数量的多个结果。
案例
请求接口:http://httpbin.ors/streas/{n}
n表示返回结果集的数量,比如输入10则会返回10个不同id的结果,如下:
r = requests.get(base_url+'/stream/10')
print(r.text)
针对此类型接口,对结果集的处理需要使用iter_lines()
迭代方法来处理。如下:
执行代码:
import requests
import json
# 发送流式请求,stream=True表示接受流式请求,返回多个结果
r = requests.get(base_url+'/stream/10',stream=True)
# 若响应内容未设置编码格式,则将其设置为utf-8格式
if r.encoding is None:
r.encoding = 'utf-8'
# 对响应结果进行迭代处理每一组数据(一次一行)
for line in r.iter_lines(decode_unicode=True): # unicode解码方式
if line:
data = json.loads(line) # 将响应的json数据转换为python数据(字典类型)
print(data['id']) #输出每个结果(字典类型)中id键对应的值
执行结果:
PS:
json.loads()
函数实现:json格式的字符串(str) ==> python格式的字典(dict)