這一部分須要用到request模塊,準備工做就是安裝request模塊。html
安裝方法移步:https://www.cnblogs.com/jszfy/p/11210783.htmlpython
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
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)
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,能夠管理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()