Requests庫GET請求是使用HTTP協議中的GET請求方式對目標網站發起請求。
(不帶參數的GET請求請看上一篇文章的練習)
1、使用Requests庫發送帶參數的GET請求
使用Get請求方式發送帶參數請求時,是params=參數字典
,而不是data=參數字典
。data=參數字典
是Post請求方式的參數形式。
"""
1.學習目標
必須掌握requests中帶參數的get請求
2.語法
requests.get(url,parmas=None)
2.1 不帶參數的get請求(看上一篇中的練習)
2.2 帶參數的get請求(如下)
3.操作步驟
# 1.導入requests庫
# 2.明確請求地址
# 3.明確請求參數
data = {key:value} 字典格式
# 4.發送請求獲取返回數據
4.需求
使用requests庫發送一個帶參數的get請求
"""
# 1.導入requests庫
import json
import requests
# 2.明確請求地址
url = "http://127.0.0.1:8000/api/departments/"
# 3.明確請求參數
# 是一個字典類型數據
data = {"$dep_id_list": "10,11"}
# 4.發送請求
response = requests.get(url=url, params=data)
# print(response.json())
# 將python對象轉換為json字符串(格式化放回數據)
result = json.dumps(response.json(), indent=2, ensure_ascii=False)
# print(type(result)) # 字符串類型
print(result)
"""
結果:
{
"count": 2,
"next": null,
"previous": null,
"results": [
{
"dep_id": "10",
"dep_name": "超神_10",
"master_name": "陸興雷_10",
"slogan": "帶頭學習"
},
{
"dep_id": "11",
"dep_name": "超神_11",
"master_name": "陸興雷_11",
"slogan": "帶頭學習"
}
]
}
"""
2、查看GET請求的內容
我們可以通過訪問Httpbin
來查看或者調試Requests庫發送請求的內容。
還是以上面的例子為例:
# 1.導入requests庫
import json
import requests
# 2.明確請求地址
# url = "http://127.0.0.1:8000/api/departments/"
url = "http://127.0.0.1:9999/get"
# 3.明確請求參數
# 是一個字典類型數據
data = {"$dep_id_list": "10,11"}
# 4.發送請求
response = requests.get(url=url, params=data)
# 這種方式調用也可以
# response = requests.get(url='http://httpbin.org/get?name=admin&age=20')
# print(response.json())
# 將python對象轉換為json字符串(格式化放回數據)
result = json.dumps(response.json(), indent=2, ensure_ascii=False)
# print(type(result)) # 字符串類型
print(result)
"""
接口返回結果:
{
"args": {
"$dep_id_list": "10,11"
},
"headers": {
"Accept": "*/*",
"Accept-Encoding": "gzip, deflate",
"Connection": "keep-alive",
"Host": "127.0.0.1:9999",
"User-Agent": "python-requests/2.18.4"
},
"origin": "127.0.0.1",
"url": "http://127.0.0.1:9999/get?%24dep_id_list=10%2C11"
}
我們可以看到args屬性中有參數內容,
如果是不帶參數的Get請求,args屬性中是沒有內容的,如下:
{
"args": {},
"headers": {
"Accept": "*/*",
"Accept-Encoding": "gzip, deflate",
"Connection": "keep-alive",
"Host": "127.0.0.1:9999",
"User-Agent": "python-requests/2.18.4"
},
"origin": "127.0.0.1",
"url": "http://127.0.0.1:9999/get"
}
"""
3、帶請求頭、參數的Get請求
例如上面例子中,請求頭信息中 "User-Agent": "python-requests/2.18.4"
,我們需要改變請求頭中User-Agent
屬性的內容,看下面例子:
# 1.導入requests庫
import json
import requests
# 2.明確請求地址
# url = "http://127.0.0.1:8000/api/departments/"
url = "http://127.0.0.1:9999/get"
# 3.明確請求參數
# 是一個字典類型數據
data = {"$dep_id_list": "10,11"}
# 明確請求頭信息
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.25 Safari/537.36 Core/1.70.3775.400 QQBrowser/10.6.4209.400"}
# 4.發送請求
response = requests.get(url=url, params=data, headers=headers)
# print(response.json())
# 將python對象轉換為json字符串(格式化放回數據)
result = json.dumps(response.json(), indent=2, ensure_ascii=False)
# print(type(result)) # 字符串類型
print(result)
"""
接口返回結果:可以看到User-Agent屬性變成了我們設置的內容了。
{
"args": {
"$dep_id_list": "10,11"
},
"headers": {
"Accept": "*/*",
"Accept-Encoding": "gzip, deflate",
"Connection": "keep-alive",
"Host": "127.0.0.1:9999",
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.25 Safari/537.36 Core/1.70.3775.400 QQBrowser/10.6.4209.400"
},
"origin": "127.0.0.1",
"url": "http://127.0.0.1:9999/get?%24dep_id_list=10%2C11"
}
"""
除此之外Get請求還有很多請求參數,如timeout
你可以設置請求時間,如果超過這個時間變自行結束請求,可以利用此判斷請求代理的相應效率,避免在某些錯誤請求上浪費過多的時間。