Python学习笔记:爬虫.content和.text区别

requests对象的get和post方法都会返回一个Response对象,这个对象里面存的是服务器返回的所有信息,包括响应头,响应状态码等。其中返回的网页部分会存在.content和.text两个对象中。

.content中间存的是字节码 .text存的是.content编码后的字符串

一般来说 .text直接用比较方便 返回的是字符串 但是有时候会解析不正常导致

返回的是一堆乱码这时用.content.decode('utf-8')就可以使其显示正常。

总的来说.text是现成的字符串,.content还要编码,但是.text不是所有时候显示都正常,这是就需要用.content进行手动编码。

 

对requests获取的原始数据,有两种获取形式,一个是r.content一个是r.text。

二者的区别在于content返回的是byte型数据,而text返回的是Unicode数据,也就是说text对原始数据进行的特殊的编码,而这个编码方式是基于对原始数据的猜测(响应头),

text一般用于返回的文本
content的一般用于对返回的其他数据类型

但是对于某些网站的中文用text可能会导致返回乱码,所以最好是使用content然后自己进行重新编码。

 

最终结论是:text 返回的是unicode 型的数据,一般是在网页的header中定义的编码形式。

content返回的是bytes,二级制型的数据。

也就是说你如果想要提取文本就用text

但是如果你想要提取图片、文件,就要用到content

实例:

'''爬取图片并存储'''
import requests

url = 'http://msn-img-nos.yiyouliao.com/inforec-20200420-1f6f8c4e4eba52d13b92e219ee192327.jpg?time=1587491277&signature=79C0C217738938CE7AE4455B1AA83687'

filename = 'pic1.jpg'
with open(filename, 'wb') as f:
    img = requests.get(url)
    contt = img.content  # 图片存储用二进制--content;text存储文本
    f.write(contt)

wb:    以二进制格式打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。

with open() 用法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值