python教程

当前位置:首页 > requests爬虫 > 当前文章

requests爬虫

requests响应r.text(文本数据)与r.json()(json数据)

2020-09-27 118赞 老董笔记
每篇文章努力于解决一个问题!更多精品可移步文章底部。

  前面的文章一直介绍请求没有说过响应,如果只请求无响应就像只拨电话无人接电话一样毫无意义!requests模块在内容处理方面做的也很周到,有文本响应、二进制响应、原始响应、json响应,基本可以满足很多场景。本文了解下文本响应和json数据响应。

  1、文本响应r.text

  1个请求发出后,Requests会基于HTTP头部对响应的编码作出有根据的推测。访问r.text时,Requests会推测其文本编码自动解码来自服务器的内容,大多数unicode字符集都能被无缝地解码。

# -*- coding: utf-8 -*-
headers = {
'user-agent':'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 Safari/537.36 Edg/95.0.1020.44',
}

r = requests.get('https://www.baidu.com/',headers=headers)
print(r.text)

省略...

  如果运气不好,requests识别编码发生错误,可以手动使用r.encoding属性来通知requests按什么方式解码。

# -*- coding: utf-8 -*-
headers = {
'user-agent':'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 Safari/537.36 Edg/95.0.1020.44',
}

r = requests.get('https://www.360.com/',headers=headers)
r.encoding='utf-8'
print(r.text)

省略...

  如果创建了自己的编码,并使用codecs模块进行注册,也可以使用这个解码器名称作为r.encoding的值,然后由Requests来处理编码。

  2、json响应 r.json()

  如果网页返回的是json数据,可以用Requests的JSON解码器r.json()来处理JSON数据,直接转为字典!我们用百度下拉词的接口来测试下。有些网页源码不规范会导致JSON解码失败,此时r.json()就会抛出一个异常。

# -*- coding: utf-8 -*-
headers = {
'user-agent':'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 Safari/537.36 Edg/95.0.1020.44',
}

r = requests.get('https://www.baidu.com/sugrec?ie=utf-8&prod=pc&wd=python',headers=headers)
print(r.json())
{'q': 'python', 'p': False, 'g': [{'type': 'sug', 'sa': 's_1', 'q': 'python是什么意思'}, {'type': 'sug'
, 'sa': 's_2', 'q': 'python培训班学费一般多少'}, {'type': 'sug', 'sa': 's_3', 'q': 'python入门教程(非常
详细)'}, {'type': 'sug', 'sa': 's_4', 'q': 'python怎么读'}, {'type': 'sug', 'sa': 's_5', 'q': 'python能
做什么'}, {'type': 'sug', 'sa': 's_6', 'q': 'python中/与//的区别'}, {'type': 'sug', 'sa': 's_7', 'q': '
python编程基础'}, {'type': 'sug', 'sa': 's_8', 'q': 'python的两种编程方式'}, {'type': 'sug', 'sa': 's_9
', 'q': 'python数据分析'}, {'type': 'sug', 'sa': 's_10', 'q': 'python语言属于什么语言'}], 'slid': '1056
5785855094654546', 'queryid': '0x291364159c38652'}

文章评论

requests响应r.text(文本数据)与r.json()(json数据)文章写得不错,值得赞赏