Python requests模塊

準備工做

這一部分須要用到request模塊,準備工做就是安裝request模塊。html

安裝方法移步:https://www.cnblogs.com/jszfy/p/11210783.htmlpython

 

用request.get()發起請求

import requests

# 一、構造請求的URL
url = "http://..."

# 二、建立請求參數
params = {
    "mobilephone": "18012345678",
    "pwd": "123456",
    "regname": "zfy"
}

headers ={
    "User-Agent":"Mozillas/5.0 test"
}

# 三、向服務器發起請求
res = requests.get(url, params=params, headers=headers) 

print(res.text)
print(res.json())
print(res.cookies)  

 

res:返回的【response】對象,能夠經過【res.屬性名】來獲取相應的屬性內容。json

根據URL能夠看出,這裏是使用【查詢字符串參數】的格式進行傳參的。服務器

 

 

 headers不必定要改,由於有的網站有反爬蟲措施,因此須要本身添加合法的請求頭。cookie

可是大多數狀況下不用修改。session

 

用request.post()方法發起請求

import requests

# 一、構造請求的URL
url = "http://...."

# 二、建立請求參數
params = {
    "mobilephone": "17012345678",
    "pwd": "123456",
    "regname": "zfy"
}

headers ={
    "User-Agent": "Mozillas/5.0 test"
}

# 三、向服務器發起請求
# 將參數傳遞給params,是以查詢字符串參數的形式傳遞參數的
res = requests.post(url, params=params, headers=headers)  # 返回的是一個response對象,能夠把它當作一個響應報文。

# 將參數傳遞給data,會以x-www-form-urlencoded的形式來傳參
res2 = requests.post(url, data=params, headers=headers)

# 若是給json傳參,會以json格式的字符串形式來傳參。
res3 = requests.post(url, json=params, headers=headers)

  

測試的某個接口須要使用多個URL 

import requests

# 一、構造請求URL
login_url = "http://。。"
recharge_url = "http://。。"

# 二、建立請求參數
login_params = {
    "mobilephone": "17012345678",
    "pwd": "123456",
}

recharge_params ={
    "mobilephone": "17012345678",
    "amount": "500000",
}

headers = {
    "User-Agent": "Mozilla/5.0 sunny"
}

# 3. 向服務器發起請求
# 先登陸
login_res = requests.post(login_url, data=login_params, headers=headers)
# cookie = login_res.cookies['JSESSIONID']
cookie = login_res.cookies

# 充值
recharge_res = requests.post(recharge_url, data=recharge_params, headers=headers, cookies=cookie)

 

session會話

建立會話對象session,能夠管理cookie值,而不用手動傳遞。post

關閉會話以後,依然能夠發起請求、測試

# 向服務器發起請求
one_session = requests.Session()

# 先登陸
login_res = one_session.post(login_url, data=login_params, headers=headers)

# 充值
recharge_res = one_session.post(recharge_url, data=recharge_params, headers=headers)

# 關閉會話
# 關閉以後, 依然能夠發起請求
# 關閉會話只不過是釋放資源
one_session.close()

  

封裝

class HandleRequest:
    """
    處理請求
    """
    def __init__(self):
        self.one_session = requests.Session()

    def to_request(self, url, method="post", data=None, is_json=False):
        # data = '{"name": "Elice"}'     # json格式的字符串
        # data = "{'name': 'Elice'}"     # 字典類型的字符串
        if isinstance(data, str):
            try:
                data = json.loads(data)
            except Exception as e:
                print("使用日誌器來記錄日誌")
                data = eval(data)

        method = method.lower()
        if method == "get":
            res = self.one_session.get(url, params=data)
        elif method == "post":
            if is_json:     # 若是is_json爲True, 那麼以json格式的形式來傳參
                res = self.one_session.post(url, json=data)
            else:   # 若是is_json爲False, 那麼以www-form的形式來傳參
                res = self.one_session.post(url, data=data)
        else:
            res = None
            print("不支持【{}】其餘方法的請求".format(method))

    def close(self):
        self.one_session.close()
相關文章
相關標籤/搜索