Python请求模块会话的用法

  介绍

这篇文章主要讲解了Python请求模块会话的用法,内容清晰明了,对此有兴趣的小伙伴可以学习一下,相信大家阅读完之后会有帮助。

http协议本身是无状态的,为了让请求之间保持状态,有了会话和饼干机制.requests也提供了相应的方法去操纵它们。

中请求的会话对象能够让我们跨http请求保持某些参数,即让同一个会话对象发送的请求头携带某个指定的参数。当然,最常见的应用是它可以让饼干保持在后续的一串请求中。

下面,通过官方文档中的示例来了解如何使用它。

进口要求
  s=requests.Session ()
  #第一步:发送一个请求,用于设置请求中的饼干
  #提示:http://httpbin.org能够用于测试http请求和响应
  s.get (& # 39; http://httpbin.org/cookies/set/sessioncookie/123456789& # 39;)
  #第二步:再发送一个请求,用于查看当前请求中的饼干
  r=s.get (“http://httpbin.org/cookies")
  打印(r.text) 

运行结果

{   “cookies": {   “sessioncookie":“123456789”;   }   }

从结果中我们可以看的出,第二次请求已经携带上了第一次请求所设置的饼干,即通过会话达到了保持饼干的目的。示例中创建了一个requests.Session()对象,通过该对象来进行http请求操作,该操作基本类似于requests.request ()

由于会话让请求之间具有了连贯性,那么,就有了跨请求参数和非跨请求参数的区别。即有时我想让所有请求均带有某个参数,而有时我只是想让单独的一条请求带上临时的参数。通过下面的例子来了解如何使用。

进口要求
  
  s=requests.Session ()
  s.headers.update ({& # 39; x-test& # 39;: & # 39;真正的# 39;})
  # & # 39;x-test& # 39;和& # 39;x-test2& # 39;被发送
  r1=s.get (& # 39; http://httpbin.org/headers& # 39;头={& # 39;x-test2& # 39;: & # 39;真正的# 39;})
  打印(r1.text)
  # & # 39;x-test& # 39;发送
  r2=s.get (& # 39; http://httpbin.org/headers& # 39;)
  打印(r2.text) 

运行结果

 # r1.text
  {
  “headers": {
  “Accept":“*/*“,
  “Accept-Encoding":“gzip、deflate"
  “Host":“httpbin.org"
  “User-Agent":“python-requests/2.22.0"
  “X-Amzn-Trace-Id":“根=1-5e91656f-b99f14a4d6f47f9e55a90bb4"
  “X-Test":“true"
  “X-Test2":“true"
  }
  }
  # r2.text
  {
  “headers": {
  “Accept":“*/*“,
  “Accept-Encoding":“gzip、deflate"
  “Host":“httpbin.org"
  “User-Agent":“python-requests/2.22.0"
  “X-Amzn-Trace-Id":“根=1-5e91656f-e9741db4c2ca2fd6e0628396"
  “X-Test":“true"
  }
  }

从结果中我们可以得出两条结论:

会话可以为请求方法提供缺省数据,比如第一次请求中的{& # 39;x-test& # 39;: & # 39;真正的# 39;}就是缺省数据,此时的缺省数据就是跨请求参数。
方法级别的参数不会被跨请求保持,比如第二次请求时,没有携带标题={& # 39;x-test2& # 39;: & # 39;真正的# 39;},返回的结果中也没有{& # 39;x-test2& # 39;: & # 39;真正的# 39;},说明该参数没有在第一次请求后被保持住。

看完上述内容,是不是对Python请求模块会话的用法有进一步的了解,如果还想学习更多内容,欢迎关注行业资讯频道。

Python请求模块会话的用法