Python爬虫Requests模块中text和content的解码

今天要说一下Requests模块中爬取到网页内容解码方式

response.text和 response.content两者的区别

requests对象的get和post方法都会返回一个Response对象, 这个对象里面存的是服务器返回的所有信息,包括响应头,响应状态码等。其中返 回的网页部分会存在.content和.text 个对象中
两者区别在于,content中间存的是字节流数据 ,而text中存的是根据requests模块自己猜测的编码方式将content内容编码成Unicode
 
常常我们使用requests.content输出的内容是需要解码的(因为网页上的内容是编码而成的,而在Python中字符串形式是以Unicode形式存在的,当然我们只想看到那些字符串,不想看到那些乱七八糟的字节,所以我们爬下来的东西才需要去解码)
 
那我们怎么去编码呢(重点重点)
在写代码之前我们应该找到网页的编码方式
 

首先要到爬取得网页上找该网页的编码方式

步骤:F12==》》Elements(网页源码)==》》找到<head>里面的charset标志,所对应的就是该网页的编码方式啦

 

得到网页的编码方式就可以继续写代码啦

 1.使用content输出

print(response.content.decode('utf-8'))  #decode('utf-8')的意思是以utf-8的编码的方式解码为Unicode

2.使用text输出

response.encoding = 'utf-8'  #为请求的网页指定该网页的编码方式,这样text输出的时候,就不会瞎猜编码方式,而解出乱七八糟的鬼
print(response.text)

参考代码(上面的response都是从参考代码里面来的)

import requests


kw = {'wd':'巴基斯坦'}


headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36"}


# params 接收一个字典或者字符串的查询参数,字典类型自动转换为url编码,不需要urlencode()
#这就是requests库的其中一个方便的地方

response = requests.get("http://www.baidu.com/s", params = kw, headers = headers)


# 查看响应内容,response.text 返回的是Unicode格式的数据
print(response.text)


# 查看响应内容,response.content返回的字节流数据
print(response.content)


# 查看完整url地址
print(response.url)


# 查看响应头部字符编码
print(response.encoding)


# 查看响应码
print(response.status_code)

 

有人看到这里就有疑问了,那我用print(response.encoding)来查看网页的编码方式

然后再来解码不行么???不行么???不行么???(你敢说不行我抽到你痉挛)

 

答案:当然是OK的啦哈哈哈哈哈哈(所以这是一个大彩蛋,到这样就有两种方式获得网页编码方式啦)

不过呢有时候可能会出错:比如爬百度用print(response.encoding)得到的是ISO-8859-1单字节编码

可是我去百度网址按F12查看的确是‘utf-8’编码,然后我果断用utf-8解码,因为单字节编码无法表示中文哦!

所以有时候出错的时候,可以就试一试这两种方法(目前我知道的就是这两种啦,因为我还是一个小白)

个个都是爱动脑筋的帅哥美女.....嘻嘻嘻嘻嘻(都这样说了还不给我“赞”?)

----------------------------------------------------------------------------------------------

 

当然有人会问啦,这个编码破东西有点不理解,能不能在帮我梳理梳理

哈哈哈哈哈哈,先给我点个赞赞赞赞

知识大放送:

encode()和decode()的区别和意思

decode英文意思是 解码,encode英文意思是 编码

字符串在Python内部的表示是unicode编码,因此,在做编码转换时,通常需要以unicode作为中间编码, 即先将其他编码的字符串解码(decode)成unicode,再从unicode编码(encode)成另一种编码。

decode的作用是将其他编码的字符串转换成unicode编码,如str101.decode('utf-8'),表示将utf-8编码的字节串str101转换成unicode编码

encode的作用是将unicode编码转换成其他编码的字符串,如str101.encode('gb2312'),表示将unicode编码的字符串str101转换成gb2312编码

差不多是这个意思啦哈哈哈哈哈

最后献上一张宝图(对各位靓仔靓妹有帮助的,记得给我集个赞呀)

  • 25
    点赞
  • 55
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 在使用 Pythonrequests 库发起 HTTP 请求时,可以通过调用响应对象的 text 属性来获取响应的文本内容。例如: ```python import requests response = requests.get('https://www.example.com') print(response.text) ``` 上述代码会向 https://www.example.com 发起一个 GET 请求,并将响应的文本内容打印输出。需要注意的是,响应的文本内容可能会根据响应头Content-Type 属性而有所不同,如 HTML 页面、JSON 数据等。在解析响应内容时,我们需要对响应类型进行判断,以便正确地处理响应内容。 ### 回答2: Python爬虫requests库是一个非常常用的库,它提供了简洁而丰富的接口,用于发送HTTP请求和处理响应。其requeststext属性是用来获取响应的内容的。 在使用requests库发送请求后,可以通过response对象的text属性来获取服务器返回的响应内容。text属性返回的是Unicode型的内容,也就是网页的HTML源代码或者是接口的返回数据。 使用text属性可以很方便地获取网页的内容,然后进行解析和提取所需的数据。可以将获取到的内容保存到本地文件,或者使用正则表达式或解析库(如BeautifulSoup)进行进一步的处理。 需要注意的是,text属性获取的内容可能会出现乱码或编码问题。对于出现乱码的情况,可以通过设置response对象的encoding属性来进行解决。另外,如果响应的内容不是文本类型(如图片、音频、视频等),那么使用text属性获取的结果可能是乱码或者不正确的,此时可以使用content属性获取二进制数据。 总之,requeststext属性是获取请求响应内容的一个重要属性,它为我们进行网页爬取和数据提取提供了便利。 ### 回答3: Python 爬虫使用 requests 库的 text 属性是用来获取请求返回的内容。具体而言,文档 text 属性返回的是以 Unicode 编码的文本内容,通常是 HTML 页面的内容。在使用 requests 库发送请求后,可以通过调用 text 属性来获取正文内容。 使用 text 属性的方法如下: 1. 导入 requests 模块,使用 `import requests`。 2. 发送请求并获取响应,例如使用 `response = requests.get(url)` 方法。 3. 调用获取的响应对象的 text 属性,例如使用 `response.text`。 这样就可以获取到请求返回的内容。可以通过打印 text 的结果来查看爬取到的网页内容。需要注意的是,text 属性返回的是以 Unicode 编码的文本内容,如果要保存到文件或进行其他操作,可能需要进行一些编码或解码的处理。 总之,Python 爬虫requests 库的 text 属性是用来获取请求返回的内容。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值