1祭玉、為什么要重點學(xué)習(xí)requests模塊泛释,而不是urllib
- 企業(yè)中用的最多的就是requests
- requests的底層實現(xiàn)就是urllib
- requests在python2 和python3中通用矛市,方法完全一樣
- requests簡單易用
2挑势、requests的作用與安裝
作用:發(fā)送網(wǎng)絡(luò)請求冈欢,返回響應(yīng)數(shù)據(jù)
命令: pip install requests
requests模塊發(fā)送簡單的get請求钦椭、獲取響應(yīng)
需求:通過requests向百度首頁發(fā)送請求宿亡,獲取百度首頁的數(shù)據(jù)
import requests
# 目標(biāo)url
url = 'https://www.baidu.com'
# 向目標(biāo)url發(fā)送get請求
response = requests.get(url)
# 打印響應(yīng)內(nèi)容
print(response.text)
response的常用屬性:
response.text
響應(yīng)體 str類型response.encoding
從HTTP header中猜測的響應(yīng)內(nèi)容的編碼方式respones.content
響應(yīng)體 bytes類型response.status_code
響應(yīng)狀態(tài)碼response.request.headers
響應(yīng)對應(yīng)的請求頭response.headers
響應(yīng)頭response.cookies
響應(yīng)的cookie(經(jīng)過了set-cookie動作)response.url
獲取訪問的urlresponse.json()
獲取json數(shù)據(jù) 得到內(nèi)容為字典 (如果接口響應(yīng)體的格式是json格式時)-
response.ok
如果status_code小于等于200平绩,response.ok返回True跃赚。
如果status_code大于200纬傲,response.ok返回False。
思考:text是response的屬性還是方法呢领猾?
- 一般來說名詞,往往都是對象的屬性,對應(yīng)的動詞是對象的方法
3.1 response.text 和response.content的區(qū)別
-
response.text
- 類型:str
- 解碼類型: requests模塊自動根據(jù)HTTP 頭部對響應(yīng)的編碼作出有根據(jù)的推測,推測的文本編碼
- 如何修改編碼方式:
response.encoding="gbk/UTF-8"
-
response.content
- 類型:bytes
- 解碼類型: 沒有指定
- 如何修改編碼方式:
response.content.deocde("utf8")
獲取網(wǎng)頁源碼的通用方式:
response.content.decode()
response.content.decode("UTF-8")
response.text
以上三種方法從前往后嘗試,能夠100%的解決所有網(wǎng)頁解碼的問題
所以:更推薦使用response.content.deocde()
的方式獲取響應(yīng)的html頁面