請(qǐng)求header
可以通過請(qǐng)求方法的headers
命名參數(shù)來向服務(wù)器端發(fā)送請(qǐng)求頭(header)
import requests
if __name__ == '__main__':
# 請(qǐng)求地址
url = 'http://www.sogou.com/'
# 請(qǐng)求時(shí)附帶的header信息
headers = {
'name': '張三'.encode('utf-8'),
'age': '23'
}
proxies = {
"http": "http://127.0.0.1:8888",
}
r = requests.get(url, proxies=proxies, headers=headers)
這里的proxies命名參數(shù)暫時(shí)不需要理解蹄咖,只是為了使用fiddler攔截請(qǐng)求。
header
命名參數(shù)通過賦值dict類型數(shù)值來傳遞請(qǐng)求頭缸血,dict中的每個(gè)鍵值對(duì)都會(huì)在requests發(fā)送請(qǐng)求時(shí)被當(dāng)成一個(gè)header傳遞。注意械筛,dict鍵值對(duì)中的值必須為str
類型捎泻,否則會(huì)拋出requests.exceptions.InvalidHeader
異常。
通過fiddler攔截該請(qǐng)求埋哟,可以看到自定義的請(qǐng)求頭被傳遞成功笆豁。
攔截到的請(qǐng)求信息頭
響應(yīng)header
通過響應(yīng)對(duì)象的headers
屬性可以獲取到全部響應(yīng)頭信息
import requests
if __name__ == '__main__':
# 請(qǐng)求地址
url = 'http://www.sogou.com/'
r = requests.get(url)
print(r.headers)
執(zhí)行代碼,將打印出響應(yīng)信息中的響應(yīng)頭信息:
{'Server': 'nginx', 'Date': 'Sun, 29 Sep 2019 15:32:42 GMT', 'Content-Type': 'text/html; charset=utf-8', 'Transfer-Encoding': 'chunked', 'Connection': 'keep-alive', 'Vary': 'Accept-Encoding', 'Set-Cookie': 'IPLOC=CN3701; expires=Mon, 28-Sep-20 15:32:42 GMT; domain=.sogou.com; path=/, SUID=E7DFE5705F20940A000000005D90CE9A; expires=Sat, 24-Sep-2039 15:32:42 GMT; domain=.sogou.com; path=/, black_passportid=; path=/; expires=Thu, 01 Jan 1970 00:00:00 GMT; domain=.sogou.com', 'P3P': 'CP="CURa ADMa DEVa PSAo PSDo OUR BUS UNI PUR INT DEM STA PRE COM NAV OTC NOI DSP COR", CP="CURa ADMa DEVa PSAo PSDo OUR BUS UNI PUR INT DEM STA PRE COM NAV OTC NOI DSP COR"', 'Pragma': 'No-cache', 'Cache-Control': 'max-age=0', 'Expires': 'Sun, 29 Sep 2019 15:32:42 GMT', 'UUID': '9fd9a88f-db2c-4e84-9fd5-130b7f7adfcd', 'Content-Encoding': 'gzip'}
可通過r.headers['header名稱']
或者r.headers.get('header名稱')
來獲取單個(gè)header值赤赊。
import requests
if __name__ == '__main__':
# 請(qǐng)求地址
url = 'http://www.sogou.com/'
r = requests.get(url)
print(r.headers['Server'])
print(r.headers.get('Date'))
執(zhí)行輸出:
nginx
Sun, 29 Sep 2019 15:36:25 GMT
當(dāng)傳入的header名稱不存在時(shí)闯狱,
r.headers['header名稱']
會(huì)報(bào)KeyError
異常,而r.headers.get('header名稱')
則會(huì)返回None
砍鸠。為了程序的健壯性扩氢,一般建議采用r.headers.get('header名稱')
的方式來獲取單個(gè)header值。