之前使用requests 不求甚解,一直使用content输出文本。阅读文档后记录如下:
import requests
r=requests.get('http://www.baidu.com')
print r.content
print r.text
你会发现,content输出的文本没问题,但是text输出的文本貌似是乱码。
深究下,我们使用
print type(r.content)
print type(r.text)
content 输出类型为 str
text 输出类型为 unicode
使用
print r.encoding
输出 ISO-8859-1 编码
属于单字节编码,最多能表示的字符范围是0-255,应用于英文系列。比如,字母’a’的编码为0x61=97。
很明显,iso8859-1编码表示的字符范围很窄,无法表示中文字符。
我们通过指定编码
r.encoding='utf-8'
print r.text
此时,刚刚的乱码已经可以正确显示了。
至此,我们大致可以说
content返回的是str 类型,就是我们眼睛所看到的内容,被浏览器渲染过。
text返回的是unicode 类型,可能是返回的最原始的数据,可以理解为尚未渲染过。
不同看法欢迎大家留言讨论