get請求
get(url, params=None, **kwargs)
requests實現get請求傳參的兩種方式
方式一:
import requests
url = 'http://www.baidu.com/s?wd=python' # 使用?攜帶參數
r = requests.get(url)
print(r.url)
執行結果:
http://www.baidu.com/s?wd=python
方式二:
import requests
url = 'http://www.baidu.com/s'
params = {'wd': 'python'} # 也可以將攜帶的參數傳給params
r = requests.get(url, params=params)
print(r.url)
執行結果:
http://www.baidu.com/s?wd=python
推薦使用第一種方式,代碼簡潔,如果需要參數化url中的參數可以參照如下方式:
import requests
lists = ['python', 'php', 'Java']
for i in lists:
url = 'http://www.baidu.com/s?wd=%s' % (str(i))
r = requests.get(url)
print(r.url)
執行結果:
http://www.baidu.com/s?wd=python
http://www.baidu.com/s?wd=php
http://www.baidu.com/s?wd=Java
post請求
post(url, data=None, json=None, **kwargs)
post請求是我們常說的提交表單,表單的數據內容就是post請求的參數,request實現post請求需設置請求參數data,數據格式可以為字典、元組、列表和json格式,不同數據格式有不同的優勢。
示例代碼:
import requests
# import json
"""
字典轉json方法
data = {'key1': '1', 'key2': '2'}
data = json.dumps(data)
"""
url = 'http://www.baidu.com'
data = 'python'
r = requests.post(url, data=data) # 使用data攜帶參數
print(r.text)
data是發送請求到網站(服務器)的數據。
注意:
requests的get和post方法的請求參數分別是params 和 data,不要混淆兩者的使用要求。
獲取相應內容
- r.status_code:響應狀態碼
- r.raw:原始響應體,使用r.raw.read()讀取
- r.content:字節方式的響應體,需要進行解碼
- r.text:字符串方式的響應體,會自動更具響應頭部的字符編碼進行解碼
- r.headers:以字典對象儲存服務器響應頭,但是這個字典比較特殊,字典鍵不區分大小寫,若鍵不存在,則返回None
- r.json():request中內置的json解碼器
- r.raise_for_status():請求失敗(非200響應),拋出異常
- r.url:獲取請求的url
- r.cookies:獲取請求后的cookies
- r.encoding:獲取編碼格式