python模块专题——7.requests

requests用于仿照客户端向服务器发送请求,并对响应进行处理的第三方库。

1 安装

pip install requests

2 使用

import requests

re=requests.get('http://www.baidu.com')
print(re.status_code)
re.encoding='utf-8'
print(re.text)

3 解析

  • requests.get(url,headers=headers,timeout)

    • 向url服务器发出get请求,并返回响应response对象
  • requests.post(url,data=data,headers=headers,timeout)

    • 向url服务器发出post请求,并返回响应response对象
    • data是请求体的字典
  • response对象

    • 属性
      • status_code
      • text
      • url响应的url
      • request.url发送请求的url
      • headers响应头
      • request.headers请求头
      • encoding 主编码(浏览器根据HTTP响应头猜测服务器的编码,若头中无charset则认为是ISO-8859-1)
      • apparent_coding 备择编码(从响应内容分析编码)
      • content二进制内容,通过调用decode()即可转为str类型,decode时可以指定编码方式
  • 获取响应内容的两种方式

    • response.text
    • response.content().decode()
  • 带有header设置的请求

    • headers参数
    • user-agent
    • referer
    • cookie
    • origin
  • 超时参数

    • timeout 达到超时参数时会报错
    • 这时可以引入第三方模块retrying
  • cookie参数

    • 可以先发送post请求,获取cookie,将登录过后的cookie参数写入,即可模拟登录后的操作
    • 作为headers的键
    • 作为get/post的参数
      • 要求传值为字典方式:cookie=cookie_dict
  • session

    • 开启会话,保持登录

    • session=requests.Session() 此时session和requests具有同样的方法

    • 服务器设置在本地的cookie会保存在session中

      session=requests.Session() 
      session.post(url,data,headers)
      session.get(url)
      
    • 使用这种方式模拟浏览器登录

      import requests
      
      def login():
          url="http://app01.cast.org.cn:7001/cast/member/loginHandle.jsp"
          session=requests.Session()
          data={
              "mUser":"username",
              "mPsw":"password",
              "usrType":"1"
          }
          header={
              "user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.116 Safari/537.36"
          }
          session.post(url,data=data,headers=header)
          req_url="http://app01.cast.org.cn:7001/cast/member/selfInfo/ins.jsp"
          res=session.get(req_url,headers=header)
          with open("infor.html",'w') as f:
              f.write(res.text)
          print(len(res.text))
      
      
      login()
      

在这里插入图片描述

Notice

应博友的要求,创建了一个QQ群,方便大家学习交流,群内也会经常分享一下学习资源。有兴趣的小伙伴可以加群哦!
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/Zeno_wrj/article/details/107586734
今日推荐