Python requests模块

准备工作

这一部分需要用到request模块,准备工作就是安装request模块。

安装方法移步:https://www.cnblogs.com/jszfy/p/11210783.html

 

用request.get()发起请求

import requests

# 1、构造请求的URL
url = "http://..."

# 2、创建请求参数
params = {
    "mobilephone": "18012345678",
    "pwd": "123456",
    "regname": "zfy"
}

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

# 3、向服务器发起请求
res = requests.get(url, params=params, headers=headers) 

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

 

res:返回的【response】对象,可以通过【res.属性名】来获取相应的属性内容。

根据URL可以看出,这里是使用【查询字符串参数】的格式进行传参的。

 

 

 headers不一定要改,因为有的网站有反爬虫措施,所以需要自己添加合法的请求头。

但是大多数情况下不用修改。

 

用request.post()方法发起请求

import requests

# 1、构造请求的URL
url = "http://...."

# 2、创建请求参数
params = {
    "mobilephone": "17012345678",
    "pwd": "123456",
    "regname": "zfy"
}

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

# 3、向服务器发起请求
# 将参数传递给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

# 1、构造请求URL
login_url = "http://。。"
recharge_url = "http://。。"

# 2、创建请求参数
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值,而不用手动传递。

关闭会话之后,依然可以发起请求、

# 向服务器发起请求
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()

  

posted on 2019-08-17 11:13  青柠锦鲤  阅读(388)  评论(0编辑  收藏  举报