python中的requests,response.text与response.content及其编码
·
文章目录
response的属性:
import requests
response=requests.get("http://www.baidu.com/")
print(response) # <Response [200]>
print(type(response)) # <class 'requests.models.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)
打印出的内容含有乱码:
# <title>ç™¾åº¦ä¸€ä¸‹ï¼Œä½ å°±çŸ¥é“</title>
修改如下, 改变下载得到的页面的编码,就可以正常打印出"友好的"文本了:
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响应内容的头部内容
更多推荐
已为社区贡献2条内容
所有评论(0)