python3 requests content和text 区别

目录

区别介绍

例子1 中文问题

例子2:保存图片


区别介绍

一直在想requests的content和text属性的区别,从print 结果来看是没有任何区别的

response = requests.get(url)
response.content
response.text

两个函数定义如下:

 @property
    def text(self):
        """Content of the response, in unicode.

        If Response.encoding is None, encoding will be guessed using
        ``chardet``.

        The encoding of the response content is determined based solely on HTTP
        headers, following RFC 2616 to the letter. If you can take advantage of
        non-HTTP knowledge to make a better guess at the encoding, you should
        set ``r.encoding`` appropriately before accessing this property.
        """

  
    @property
    def content(self):
        """Content of the response, in bytes."""

通过函数定义可以知道:

resp.text返回的是Unicode型的数据。
resp.content返回的是bytes型也就是二进制的数据
文本类型用text,图片、文件类型用contexnt

content中存的是字节码,而text中存的是Beautifulsoup根据猜测的编码方式将content内容编码成字符串。

直接输出content,会发现前面存在b'这样的标志,这是字节字符串的标志,而text是,没有前面的b,对于纯ascii码,这两个可以说一模一样,对于其他的文字,需要正确编码才能正常显示。大部分情况建议使用.text,因为显示的是汉字,但有时会显示乱码,这时需要用.content.decode('utf-8')

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

例子1 中文问题

输出的结果为:

遇到中文时就会显示乱码

这样不是我们想要的结果了

那么这个时候就只能用content的方法来实现解码了

结果是:

这个时候不过都是16进制的东西,这个没有关系再进行 decode('utf-8') 对应的解码就可以了

解决方案:进行 decode('utf-8') 对应的解码就可以了

结果:

这样就可以显示你想要的结果了

例子2:保存图片

import re
import requests

session = requests.session()
index = 1
try:
    f = open('chouti.txt','r')
    txt = f.read()
    pattern = re.compile('http://(.*?).jpg',re.S)
    items = re.findall(pattern, txt)
    for item in items:
        url = "http://" + item + ".jpg"
        respone = session.get(url)

        # context open文件要用wb,text open文件用w。
        f1 = open(str(index)+".jpg", 'wb')
        f1.write(respone.content)
        f1.close()
        index+=1
finally:
    f.close()



 

### 回答1: 在使用 Python 的 requests 库发起 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请求和处理响应。其中,requests库中的text属性是用来获取响应的内容的。 在使用requests库发送请求后,可以通过response对象的text属性来获取服务器返回的响应内容。text属性返回的是Unicode型的内容,也就是网页的HTML源代码或者是接口的返回数据。 使用text属性可以很方便地获取网页的内容,然后进行解析和提取所需的数据。可以将获取到的内容保存到本地文件中,或者使用正则表达式或解析库(如BeautifulSoup)进行进一步的处理。 需要注意的是,text属性获取的内容可能会出现乱码或编码问题。对于出现乱码的情况,可以通过设置response对象的encoding属性来进行解决。另外,如果响应的内容不是文本类型(如图片、音频、视频等),那么使用text属性获取的结果可能是乱码或者不正确的,此时可以使用content属性获取二进制数据。 总之,requests库中的text属性是获取请求响应内容的一个重要属性,它为我们进行网页爬取和数据提取提供了便利。 ### 回答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、付费专栏及课程。

余额充值