我们在请求有些网站的数据接口时需要携带session才能请求成功,之前用php写过一个,参考这个里https://sulao.cn/post/547.html
现在用flask框架写工具也需要这个功能,顺利写了个记录下来
登录并保存session_id的方法
import requests #保存session_id def saveSessionId(username, password): url = "http://sulao.cn/login" json_vaule = { "name" : username, "password" : hashlib.md5(password.encode(encoding='utf-8')).hexdigest() } response = requests.post(url, data=json.dumps(json_vaule)) json_response = response.json() return json_response["session_id"]
然后就是我取数据接口数据的方法
from flask import Flask,render_template,request,jsonify import urllib.request as rq import json app = Flask(__name__) @app.route('/show', methods=['POST','GET']) def show(): if request.method == 'POST': username = request.form.get('user') password = request.form.get('pass') cid = saveSessionId(username, password) cid = str(cid) url = "http://sulao.cn/api" header = { 'session_id':cid } response = rq.Request(url, headers=header) response = rq.urlopen(response) response = response.read() response = response.decode('utf-8') return response return render_template('view/show.html')
使用Request对象发送请求时就可以携带一个headers,这里就可以将你的session信息放进去,是字典类型的结构
注意了发送POST请求携带session是另一种写法,过两天再更新上来