1. 程式人生 > >python中的requests,response.text與response.content ,及其編碼

python中的requests,response.text與response.content ,及其編碼

requests

import requests
response=requests.get(“http://www.baidu.com/“)

一、response的屬性:

print(response) #

response.status_code

http請求的返回狀態,2XX 表示連線成功,3XX 表示跳轉 ,4XX 客戶端錯誤 , 500 伺服器錯誤

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.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頁面.

response.encoding

從HTTP header中猜測的響應內容編碼方式

response.apparent_encoding

從內容分析出的響應內容的編碼方式(備選編碼方式)

response.headers

http響應內容的頭部內容