python中的requests,response.text与response.content ,及其编码

文章目录

  • response的属性:
          • 1. response.status_code
          • 2. response.text
          • 3. response.content
          • 4. response.encoding
          • 5. response.apparent_encoding
          • 6. response.headers

response的属性:

import requests
response=requests.get("http://www.baidu.com/")
print(response)            #  
print(type(response))   # 
1. response.status_code

http请求的返回状态,2XX 表示连接成功,3XX 表示跳转 , 4XX 客户端错误 , 500 服务器错误

2. response.text

http响应内容的 字符串(str) 形式,请求url对应的页面内容

response=requests.get("http://www.baidu.com/")
print(response.text)

打印出的内容含有乱码:

# ç™¾åº¦ä¸€ä¸‹ï¼Œä½ å°±çŸ¥é“

修改如下, 改变下载得到的页面的编码,就可以正常打印出"友好的"文本了:

response.encoding="utf-8"
print(response.text)  # 打印文本中没有乱码

小结 : 更改编码使用:response.encoding=“utf-8” 或者 response.encoding=”gbk”
具体要看你请求的网页是用什么方式编码的,针对不同情况用对应的编码方式.

比如下面这个例子, 不用编码也可以打印正常文本 ,如果你还是用response.encoding=“utf-8” ,反而会出现乱码

# 没有乱码:
response =requests.get("http://www.qq.com/")
print(response.text)   

response =requests.get("http://www.qq.com/")
response.encoding="gbk"  
print(response.text)    

# 有乱码:
response =requests.get("http://www.qq.com/")
response.encoding="utf-8"  
print(response.text)    
3. response.content

HTTP响应内容的 二进制(bytes) 形式

response =requests.get("http://www.baidu.com/")
# print(response.content)     #打印出的是二进制形式
print(response.content.decode("utf-8"))
response =requests.get("http://www.qq.com/")
# print(response.content)     #打印出的是二进制形式 
print(response.content.decode("gbk"))

小结:更改编码使用 response.content.deocde(“utf8”)
更推荐使用response.content.deocde()的方式获取响应的html页面.

4. response.encoding

从HTTP header中猜测的响应内容编码方式

5. response.apparent_encoding

从内容分析出的响应内容的编码方式(备选编码方式)

6. response.headers

http响应内容的头部内容

你可能感兴趣的:(Python)