request的使用(三)

146 阅读1分钟

cookie的使用

在get中传递cookie,网络请求中会使用这个cookie,但是并不会将其存储变成 requests的cookie

import requests
import time

mycookie = dict(BDSID="zhadu")

req = requests.get("http://httpbin.org/cookies",cookies = mycookie)
time.sleep(3)
print(req.cookies)
print(req.text)

数据展示如下:

<RequestsCookieJar[]>
{
  "cookies": {
    "BDSID": "zhadu"
  }
}

cookies设置

从网上粘贴下来的cookies然后进行设置,使用RequestsCookieJar对象

import requests

cookies = 'xxxxxxx'
jar = requests.cookies.RequestsCookieJar()
headers = {
    'Host': 'www.xxxx.com',
    'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.116 Safari/537.36'
}
for cookie in cookies.split(';'):
    key, value = cookie.split('=', 1)
    jar.set(key, value)
r = requests.get("http://www.xxxx.com", cookies=jar, headers=headers)
print(r.text)

session设置

这个部分requests 和 session有关 使用cookie模拟登录配合session的步骤: 首先使用session.post登陆一个要登录的网站,因为是会话,所以会获取cookies信息 在下一次的get请求的时候,直接携带cookies的信息

  • 注意一下:session的请求(自动携带cookies)和request的请求(不会携带cookies信息)
import requests

session = requests.Session()  # 会话
mysession1 = session.get("http://httpbin.org/cookies/set/number/123456789")
mysession1 = session.get("http://httpbin.org/cookies")
print(mysession1.text)

mysession2 = requests.get("http://httpbin.org/cookies/set/number/123456789")
mysession2 = requests.get("http://httpbin.org/cookies")
print(mysession2.text)

数据展示如下:

{
  "cookies": {
    "number": "123456789"
  }
}

{
  "cookies": {}
}