resp=resquests.get(url)
print(type(resp)) #<class 'requests.models.Response'>
第一行代码使用requests库发送get请求,得到响应数据resp。
第二行代码的输出结果可以得到响应回来的数据resp是Response对象。
现在讲一下resp.json()与json.loads(str)的区别:
(1)resp.json()
json_data=resp.json()
print(type(json_data)) #<class 'dict'>
json_data=resp.json()可以将爬虫程序响应回来的Response对象数据不做其他处理直接转化成json数据,得到的json_data是字典dict类型的数据。
(2)json.loads(str)
str_resp=resp.text
#此次为本文未作说明代码
json_data=json.loads(str_resp)
print(type(json_data)) #<class 'dict'>
str_resp=resp.text将响应回来的Response对象resp通过.text方法转化成字符串类型。再用字符串的处理方法得到字符串str(本文不做说明)。最后再利用json_data=json.loads(str)得到字典dict类型的数据json_data。
总结:
resp.json()的作用对象是requests.get()响应回来的Response对象;
json.loads(str)的作用对象是字符串str。
当requests.get()响应回来的Response对象不能直接通过(1)转化为所需的json字典类型数据,可能是响应数据需要经过处理才能转化为json数据,此时可以考虑使用(2)方法得到数据。
————————————————
原文链接:https://blog.csdn.net/nice_name_get/article/details/119445240