爬虫(2)-Flask后端 -接口
存完数据之后,就是通过Python代码将其显示在页面上,并被前端调用,加载到前端界面。
这边采用flask框架。
大体形式可以参照 廖雪峰 Python中 web框架里的flask。
代码中先是查询了数据库的内容
def find(select1, select2):
db, cursor = cur()
data = show(cursor, 1000, select1, select2)
db.commit()
data_dict = {}
data_list = []
num = 0
a = ['id', 'RecruitPostName', 'CountryName', 'LocationName', 'BGName', 'CategoryName', 'Responsibility_new',
'LastUpdateTime',
'Responsibility', 'Requirement', 'CategoryId']
for i in data:
num = num + 1
one_dict = dict(zip(a, i))
data_list.append(one_dict)
data_dict['total'] = num
data_dict['items'] = data_list
option1 = {'40001': [{'value': '40001001', 'label': '技术研发类'},
{'value': '40001002', 'label': '质量管理类'},
{'value': '40001003', 'label': '技术运营类'},
{'value': '40001004', 'label': '安全技术类'},
{'value': '40001005', 'label': 'AI、算法与大数据'},
{'value': '40001006', 'label': '企管类'}],
'40002': [{'value': '40002001', 'label': '设计类'},
{'value': '40002002', 'label': '游戏美术类'}],
'40003': [{'value': '40003001', 'label': '产品类'},
{'value': '40003002', 'label': '游戏产品类'},
{'value': '40003003', 'label': '项目类'}],
'40004': [{'value': '40004', 'label': '营销与公关'}],
'40005': [{'value': '40005001', 'label': '销售类'},
{'value': '40005002', 'label': '客服类'}],
'40006': [{'value': '40006', 'label': '内容'}],
'40007': [{'value': '40007', 'label': '财务'}],
'40008': [{'value': '40008', 'label': '人力资源'}],
'40009': [{'value': '40009', 'label': '法律与公共策略'}],
'40010': [{'value': '40010', 'label': '行政支持'}],
'40011': [{'value': '40011', 'label': '战略与投资'}]}
option = [{'value': '40001', 'label': '技术'},
{'value': '40002', 'label': '设计'},
{'value': '40003', 'label': '产品'},
{'value': '40004', 'label': '营销与公关'},
{'value': '40005', 'label': '销售、服务与支持'},
{'value': '40006', 'label': '内容'},
{'value': '40007', 'label': '财务'},
{'value': '40008', 'label': '人力资源'},
{'value': '40009', 'label': '法律与公共策略'},
{'value': '40010', 'label': '行政支持'},
{'value': '40011', 'label': '战略与投资'}]
data_use = {'code': 20000, 'data': data_dict, 'option': option, 'option1': option1.get(select1)}
return data_use
之后就是通过flask将数据显示在网页上作为接口
from flask import Flask, jsonify
from flask import request
import test
app = Flask(__name__)
class Config(object):
DEBUG = True
JSON_AS_ASCII = False
app.config.from_object(Config)
@app.route('/data', methods=['GET', 'POST'])
def tencent_data():
select1=request.args.get('select')
select2 = request.args.getlist('select_after[]')
print(select2)
data = test.find(select1,select2)
return jsonify(data)
@app.route('/', methods=['GET', 'POST'])
def main():
# data = {"code": 20000, "token": 1000000}
return '<h1>hello user<h1>'
@app.route('/user/login', methods=['GET', 'POST'])
def loginone():
data = eval(request.data.decode())
username = data.get('username')
password = data.get('password')
old_password, token = test.login(username)
if password == old_password:
data = {"code": 20000,'data': { "token": token}}
else:
data = {"code": 20001, 'msg': '密码错误'}
return jsonify(data)
@app.route('/user/logout', methods=['GET', 'POST'])
def loginout():
data = {"code": 20000, "data": "success"}
return jsonify(data)
@app.route('/user/info', methods=['GET', 'POST'])
def logininfo():
data = request
print(data)
data = {"code": 20000, "data": {'name': 'hello', 'avatar': 'https://wpimg.wallstcn.com/f778738c-e4f8-4870-b634-56703b4acafe.gif'}}
return jsonify(data)
if __name__ == '__main__':
app.run()
其中还有vue的登录,退出,以及信息反馈接口。以保证在vue-admin-template添加完代理后可以实现两个端口分离。
#查询user表数据
def login(name):
db, cursor = cur()
sql = "select password,token from user where username= %s"
cursor.execute(sql, (name))
password, token = cursor.fetchone()
return password, token
查询login表数据
之后的操作就是前端的修改了。