接口調用,有headers,data,params,
需要傳入HTTP Header時,我們傳入一個dict作為headers參數:headers=dict
要發送POST請求,只需要把get()方法變成post(),然后傳入data參數作為POST請求的數據:data = dict
requests默認使用application/x-www-form-urlencoded對POST數據編碼。如果要傳遞JSON數據,可以直接傳入json參數:json=dict
params = {'key': 'value'}
r = requests.post(url, json=params) # 內部自動序列化為JSON
上傳文件需要更復雜的編碼格式,但是requests把它簡化成files參數:
>>> upload_files = {'file': open('report.xls', 'rb')}//在讀取文件時,注意務必使用'rb'即二進制模式讀取,這樣獲取的bytes長度才是文件的長度。
>>> r = requests.post(url, files=upload_files)
session,一個session一次會話對象,(兩種方法,cookie,session模擬瀏覽器網頁操作都可以)
操作cookie
import requests
url = 'https://www.douban.com/login'
data = {"mobilePhone": "17374858677", "userName": "xiaoming"}
res = requests.get(url, data)
cookies = res.cookies
# 充值(sessionId在cookies)
rechanrge_data = {"mobilePhone": "17374858677", "userName": "xiaoming"}
res1 = requests.post(rechanrge_url, data=rechanrge_data, cookies=cookies)
print(res1.text)
使用session不用再攜帶cookies,如下
session = requests.session()
url = 'https://www.douban.com/login'
data = {"mobilePhone": "17374858677", "userName": "xiaoming"}
res = session.get(url, data)
rechanrge_data = {"mobilePhone": "17374858677", "userName": "xiaoming"}
res1 = requests.post(rechanrge_url, data=rechanrge_data, cookies=cookies)
print(res1.text)
但是要注意不能再次初始化cookie,相當於再次打開瀏覽器,cookie更新了