• 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()
    

      

  • 相关阅读:
    poj 1014||hdu 1059 dividing(多重背包 二进制优化)
    Java多线程循环打印ABC的5种实现方法
    java资料搜索网站
    idea 离线安装 lombok插件
    解决TIME_WAIT过多造成的问题
    JAVA线程池详解
    linux vmstat命令
    Mysql慢查询
    sql中强制使用索引
    JAVA 利用 jmc或jvisualvm 监控 本地或者远程JVM
  • 原文地址:https://www.cnblogs.com/jszfy/p/11337064.html
Copyright © 2020-2023  润新知