sgt1020于 2019-10-14 23:40:08 发布4317 收藏 7

###python中requests.session()的用法
session()中方法和requests()中一样
session.get() session.post()

用法:1
创建一个session对象
s = requests.Session()
用session对象发出get请求,设置cookies
s.get(‘http://httpbin.org/cookies/set/sessioncookie/123456789’)
用session对象发出另外一个get请求,获取cookies
r = s.get(“http://httpbin.org/cookies”)
显示结果
r.text
‘{“cookies”: {“sessioncookie”: “123456789”}}’

用法2
#创建一个session对象
s = requests.Session()
设置session对象的auth属性,用来作为请求的默认参数
s.auth = (‘user’, ‘pass’)
设置session的headers属性,通过update方法,将其余请求方法中的headers属性合并起来作为最终的请求方法的headers
s.headers.update({‘x-test’: ‘true’})
#发送请求,这里没有设置auth会默认使用session对象的auth属性,这里的headers属性会与session对象的headers属性合并
r = s.get(‘http://httpbin.org/headers’, headers={‘x-test2’: ‘true’})
查看发送请求的请求头
r.request.headers

import requests
from bs4 import BeautifulSoup
 
url = "http://www.v2ex.com/signin"
UA = "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.13 Safari/537.36"
 
header = { "User-Agent" : UA,
           "Referer": "http://www.v2ex.com/signin"
           }
 
v2ex_session = requests.Session()
f = v2ex_session.get(url,headers=header)
 
soup = BeautifulSoup(f.content,"html.parser")
once = soup.find('input',{'name':'once'})['value']
print(once)
 
postData = { 'u': 'whatbeg',
             'p': '*****',
             'once': once,
             'next': '/'
             }
 
v2ex_session.post(url,
                  data = postData,
                  headers = header)
 
f = v2ex_session.get('http://www.v2ex.com/settings',headers=header)
print(f.content.decode())

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐