接口自動化requests

目錄

 

響應

響應出現亂碼 

請求

get請求_無參數

get請求_有參數

post請求

請求數據_表單

請求數據_json

設置請求頭

session


響應

resp.status_code       狀態碼
resp.url                      請求url
resp.encoding           查看響應頭部字符編碼
resp.headers             頭信息
resp.cookies              cookie信息
resp.text                    文本形式的響應內容
resp.content              字節形式的響應內容,圖片等
resp.json()                 JSON形式的響應內容

import requests

resp = requests.get('http://www.baidu.com')
print(resp.status_code)
print(resp.url)
print(resp.encoding)
print(resp.headers)
print(resp.cookies)
print(resp.text)
print(resp.content)

響應出現亂碼 

import requests

url = 'http://www.weather.com.cn/data/sk/101020100.html'
resp = requests.get(url)

# 返回結果數據正常顯示,瀏覽器解析亂碼,是因爲服務器沒有設置返回數據的編碼格式,而瀏覽器默認解碼ISO-8859-1
print(resp.json())
print('❀。。。。。。。。。。。')

# ★ 解決辦法1
print(resp.content.decode(encoding='utf-8'))
print('❀。。。。。。。。。。。')

# ★ 解決辦法2
resp.encoding = 'utf-8'
print(resp.json())

請求

get請求_無參數

import requests

resp = requests.get('http://www.baidu.com')
# 解決中文亂碼問題,decode解碼
print(resp.content.decode(encoding='utf-8'))

get請求_有參數

import requests

# 3種方式訪問百度搜索,params的值爲一個字符串或字典
resp = requests.get('http://www.baidu.com/S?wd=嗯哼')
resp1 = requests.get('http://www.baidu.com/S', params="wd=楊冪")
resp2 = requests.get('http://www.baidu.com/S', params={"wd": "秋刀魚"})

print(resp.text)

 

post請求

請求數據_表單

import requests

# 獲取驗證碼
resp_get_verify_code = requests.get('http://127.0.0.1/index.php?m=Home&c=User&a=verify&r=0.7023819204519448')
print(resp_get_verify_code.cookies)
# 登錄
resp = requests.post('http://localhost/index.php?m=Home&c=User&a=do_login',
                     data={"username": "18682971383", "password": "123321", "verify_code": "8888"})
print('tpshop登錄接口返回數據:', resp.json())

請求數據_json

import requests

resp = requests.post('http://182.92.81.159/api/sys/login',
                     json={
                            "mobile": "13800000002",
                            "password": "123456"
                            }
                     )
print('IHRM登錄接口返回數據:', resp.json())

 

設置請求頭

import requests

headers = {"Content-Type":"application/json"}
resp = requests.post('http://182.92.81.159/api/sys/login',  json={
                            "mobile": "13800000002",
                            "password": "123456"
                            }, headers=headers
                     )
print(resp.json())

session

"""
session對象代表一次用戶會話:
    從客戶端瀏覽器連接服務器開始,到客戶端瀏覽器與服務器斷開會話能讓我們在跨請求時候保持某些參數
    比如在同一個 session 實例發出的所有請求之間保持cookie
"""
import requests

session = requests.Session()
resp_verify = session.get('http://127.0.0.1/index.php?m=Home&c=User&a=verify&r=0.8333015742274967')
resp_login = session.post('http://127.0.0.1/index.php?m=Home&c=User&a=do_login&t=0.5339500519807754',
                          data={"username": "18682971383", "password": "123321", "verify_code": "8888"}
                          )
resp_order = session.get('http://127.0.0.1/Home/Order/order_list.html')

print(resp_verify.content)
print(resp_login.json())
print(resp_order.text)
# 不是很安全,但卻很實用,竊取令牌
import requests
# 獲取驗證碼,登錄,點擊我的訂單

resp_verify = requests.get('http://127.0.0.1/index.php?m=Home&c=User&a=verify&r=0.8333015742274967')
cookies = resp_verify.cookies
print(cookies)

resp_login = requests.post('http://127.0.0.1/index.php?m=Home&c=User&a=do_login&t=0.5339500519807754',
                           data={"username": "18682971383", "password": "123321", "verify_code": "8888"},
                           cookies=cookies)
resp_order = requests.get('http://127.0.0.1/Home/Order/order_list.html', cookies=cookies)

print(resp_verify.content)
print(resp_login.json())
print(resp_order.text)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章