http请求的工具类

在这里插入图片描述
即将改造的代码:

import requests
#登陆
url='https://accounts.douban.com/j/mobile/login/basic'
message = {"name": "******", "password": "******", "remember": "false"}
header={"User-Agent":"Mozilla/5.0",
         "Sec-Fetch-Site":"same-origin",
         "X-Requested-With":"XMLHttpRequest",
         "Content-Type":"application/x-www-form-urlencoded",
         "Accept": "application/json",
         "Referer":"https://accounts.douban.com/passport/login_popup?login_source=anony",
        }
res =requests.post(url,data=message,headers=header)
print(res.status_code)
print(res.cookies)
#查看日记
url_chakan='https://www.douban.com/people/150969086/notes'
header={"User-Agent":"Mozilla/5.0",
         "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9",
         "Referer":"https://www.douban.com/people/150969086/notes",
        }
res2 =requests.get(url=url_chakan,headers=header,cookies=res.cookies)
print(res2.status_code)
print(res2.text)

从上边可以看出,很多都是一样的,所以可以写成类

import requests

class HttpRequest:
        """利用request封装get请求和post请求"""

        def http_request(self):
            """url:请求的地址http://XXX:port
               :param:传递的参数 非必填参数 字典的格式传递参数"""
            url ='https://accounts.douban.com/j/mobile/login/basic'
            data={"name": "****", "password": "****", "remember": "false"}
            header = {"User-Agent": "Mozilla/5.0",
                      "Sec-Fetch-Site": "same-origin",
                      "X-Requested-With": "XMLHttpRequest",
                      "Content-Type": "application/x-www-form-urlencoded",
                      "Accept": "application/json",
                      "Referer": "https://accounts.douban.com/passport/login_popup?login_source=anony",
                      }
            res=requests.post(url,data,headers=header,cookies=None)

            print("响应正文是:",res.text)
            print("响应状态码是:",res.status_code)

但是以上的代码不足之处是只能进行post请求,需要进行参数化,优化前:

import requests

class HttpRequest:
    """利用request封装get请求和post请求
   """
    def http_request(self,url,data,hearder=None,cookie=None):
        """url:请求的地址http://XXX:port
          :param:传递的参数 非必填参数 字典的格式传递参数"""
        res=requests.post(url,data,headers=header,cookies=cookie)#响应结果的消息实体
        return res #返回一个消息实体

if __name__=='__main__':
    url = 'https://accounts.douban.com/j/mobile/login/basic'
    data = {"name": "***", "password": "***", "remember": "false"}
    header = {"User-Agent": "Mozilla/5.0",
              "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9",
              "Referer": "https://www.douban.com/people/150969086/notes",
              }
    res=HttpRequest().http_request(url,data,header)
    print("登陆结果是:",res.text)

    #查询日记
    chaxun_url ='https://www.douban.com/people/150969086/notes'
    chaxun_res=HttpRequest().http_request(chaxun_url,header,res.cookies)
    print("充值结果是:",res.text)

请求参数化,优化后:

import requests

class HttpRequest:
    """利用request封装get请求和post请求
   """
    def http_request(self,url,method,data=None,cookie=None):
        """url:请求的地址http://XXX:port
          :param:传递的参数 非必填参数 字典的格式传递参数
          method:请求方法,支持post和get
          cookie:请求的时候传递的cookie值"""
        if method=='get':
            res = requests.get(url,data,cookies=cookie)
        else:
            res = requests.post(url,data)
        return res #返回一个消息实体

if __name__=='__main__':
    url = 'https://accounts.douban.com/j/mobile/login/basic'
    data = {"name": "***", "password": "***", "remember": "false"}
    header = {"User-Agent": "Mozilla/5.0",
              "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9",
              "Referer": "https://www.douban.com/people/150969086/notes"
              }
    res=HttpRequest().http_request(url,'post',data=data)
    print("登陆结果是:",res.text)

    #查询日记
    chaxun_url ='https://www.douban.com/people/150969086/notes'
    chaxun_res=HttpRequest().http_request(chaxun_url,'get',cookie=res.cookies)
    print("充值结果是:",chaxun_res.text)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值