zoukankan      html  css  js  c++  java
  • 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()
    

      

  • 相关阅读:
    thinkphp在wamp 配置去掉url中index.php方法
    mysql新监语句需要前面加SET FOREIGN_KEY_CHECKS=0;
    ini_set的用法介绍
    SpringBoot项目启动报错:java.lang.RuntimeException: java.lang.reflect.InvocationTargetException
    我的分享:第八章: 用Redis轻松实现秒杀系统
    项目分享:第一章:个人电商项目
    SpringBoot框架:第二章:SpringBoot中static和templates二个目录下的页面和静态资源访问的三个常见问题
    我的分析:第八章:JAVA高级工程师知识点
    Springboot项目启动报org.springframework.beans.factory.UnsatisfiedDependencyException
    Disconnected from the target VM, address: '127.0.0.1:56577', transport: 'socket'
  • 原文地址:https://www.cnblogs.com/jszfy/p/11337064.html
Copyright © 2011-2022 走看看