requests模块的学习

requests模块的学习

使用事前

  • pip install requests

发送get,post请求,获取 响应

  • response = requests.get(url) #发送get请求,请求url地址对应的响应
  • response = reqeusts.post(url,data={请求体的字典}) ##发送post请求

response的方法(响应内容

  • response.text
    • 该方式往往会出现乱码,出现乱码使用response.encoding=”utf-8”
  • response.content.decode()

    • 把响应的二进制字节流转化为str类型
  • resposne.request.url #发送请求的url地址 ==字符串

  • response.url #response响应的url地址 ==字符串
  • response.request.headers #请求头 ==字典
  • response.headers #响应请求 ==字典

获取网页源码的正确打开方式(通过下面三种方式一定能够获取到网页的正确解码之后的字符串)

    1. response.content.decode() (默认 utf-8)
    1. response.content.decode(“gbk”)
    1. response.text (网页推测解码格式)

发送带header的请求

  • 为了模拟浏览器,获取和浏览器一模一样的内容
    1
    2
    3
    4
    5
    headers = {
    "User-Agent":"Mozilla/5.0 (iPhone; CPU iPhone OS 10_3 like Mac OS X) AppleWebKit/602.1.50 (KHTML, like Gecko) CriOS/56.0.2924.75 Mobile/14E5239e Safari/602.1",
    "Referer": "http://fanyi.baidu.com/?aldtype=16047"}

    response = requests.get(url,headers=headers)

使用超时参数

  • requests.get(url,headers=headers,timeout=3) # 3秒内必须返回响应,否则会报错

修改get请求

retrying模块的学习

  • pip install retrying
    1
    2
    3
    4
    5
    6
    from retrying import retry

    @retry(stop_max_attempt_number=3)
    def fun1():
    print("this is func1")
    raise ValueError("this is test error")

处理cookie相关的请求

  • 人人网{“email”:”mr_mao_hacker@163.com“, “password”:”alarmchime”}

  • 直接携带cookie请求url地址

      1. cookie放在headers中(添加一个cookie字段
        1
        headers= {"User-Agent":"....","Cookie":"cookie 字符串"}
      1. cookie字典传给cookies(变量)参数
      • requests.get(url,cookies=cookie_dict)
    • 将浏览器上的cookie 生成一个字典(字典推导式快捷法split”=”[0],”=”[-1] ),再传给requests.get(url, headers= ,cookies= )
  • 先发送post请求,获取cookie,带上cookie请求登录后的页面

    先搞清楚发生了什么,我们再去模仿浏览器。

    浏览器在第一次请求登陆的时候 对方服务器发送cookie 第二次把这个cookie带上进行后续的请求 —-》session 类

      1. seesion = requests.session()#session具有的方法和requests一样 实例化session
      1. session.post(url,data,headers) #服务器设置在本地的cookie会保存在session
      1. session.get(url) #会带上之前保存在session中的cookie,能够请求成功
-------------本文结束 谢谢阅读-------------
-------------若有错误欢迎评论-------------
2块钱请我吃根热狗吧,啾咪.⁄( ⁄•⁄ω⁄•⁄ )⁄.