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()
相关文章
相关标签/搜索