技术栈概览
本项目采用轻量级 Web 框架 Flask 构建后端,前端结合 Vue.js 实现交互,数据存储选用 MySQL 5.7。开发环境基于 Python 3.8,使用 PyCharm 进行编码,数据库管理通过 Navicat 12 完成。
界面展示
系统首页

用户注册与登录

周边服务模块

个人中心与管理端
黑龙江旅游景点数据分析系统采用 Python Flask 框架与 MySQL 数据库构建,集成爬虫抓取景点及周边住宿美食数据。系统支持用户端浏览收藏与管理端可视化看板,利用百度人脸识别 API 增强安全性。通过 B/S 架构实现前后端分离,Vue 负责视图层,后端处理业务逻辑与数据清洗。测试表明系统功能稳定,能有效辅助旅游资源管理与决策优化。

本项目采用轻量级 Web 框架 Flask 构建后端,前端结合 Vue.js 实现交互,数据存储选用 MySQL 5.7。开发环境基于 Python 3.8,使用 PyCharm 进行编码,数据库管理通过 Navicat 12 完成。
系统首页

用户注册与登录

周边服务模块

个人中心与管理端


Flask 作为微框架,只保留路由、会话管理等核心功能,扩展性极强。配合 SQLAlchemy 等扩展,可以快速搭建 RESTful API。相比重型框架,它更灵活,适合快速迭代的数据分析类项目。
Vue 专注于视图层,易于上手且能与现有项目整合。在单页面应用(SPA)中,它能有效减少页面刷新,提升用户体验。
MySQL 开源、跨平台且性能稳定,支持多线程处理,非常适合存储结构化的旅游数据及用户信息。
采用浏览器/服务器模式,将核心逻辑集中在服务端,降低了客户端维护成本,便于统一更新和权限控制。
系统集成了 Scrapy 爬虫模块,能够自动抓取景点、住宿及美食信息。通过动态配置表名,实现了通用化的数据爬取接口。
为了增强账户安全性,接入了百度 AI 的人脸识别 API。在关键操作或登录环节,通过比对两张图片的相似度来确认身份。
后端提供按值统计接口,支持对特定字段进行聚合查询,返回 JSON 格式数据供前端图表渲染,直观展示资源分布情况。
这里展示几个核心接口的实现逻辑,重点在于如何调用外部服务和处理请求。
@main_bp.route("/pythonfu3slnz4/matchFace", methods=['GET'])
def pythonfu3slnz4_matchface():
''' baidubce 百度人脸识别 '''
if request.method == 'GET':
msg = {"code": normal_code}
req_dict = session.get("req_dict")
face1 = req_dict.get("face1")
# 获取本地文件路径
file_path1 = '{}/api/templates/front/{}'.format(
os.getcwd(), face1)
face2 = req_dict.get("face2")
file_path2 = '{}/api/templates/front/{}'.format(
os.getcwd(), face2)
# 获取百度 API Key 和 SecretKey
data = config.getbyparams(config, config, {"name":"APIKey"})
client_id = data[0].get("value")
data = config.getbyparams(config, config, {"name":"SecretKey"})
client_secret = data[0].get("value")
bdb = BaiDuBce()
score = bdb.bd_check2pic(file_path1, file_path2)
msg['score'] = score
return jsonify(msg)
注意: 实际部署时,os.system(cmd) 执行爬虫命令存在安全风险,建议在生产环境中改用异步任务队列(如 Celery)来处理爬虫逻辑,避免阻塞主线程。
@main_bp.route("/pythonfu3slnz4/spider/<tableName>", methods=['GET'])
def schema_spider(tableName):
msg = {"code": normal_code, "msg": "success", "data": []}
# Linux cmd = "cd /yykj/python/9999/spider19ec523m && scrapy crawl "+tableName+"Spider -a databaseName=pythonfu3slnz4"
# Windows # cmd = "cd C:\\test1\\spider && scrapy crawl " + tableName + "Spider -a databaseName=pythonfu3slnz4"
os.system(cmd)
return jsonify(msg)
@main_bp.route("/pythonfu3slnz4/value/<tableName>/<xColumnName>/<yColumnName>", methods=['GET'])
def schema_value_quyu(tableName, xColumnName, yColumnName):
''' 按值统计接口 '''
if request.method == 'GET':
msg = {"code": normal_code, "msg": "success", "data": {}}
mapping_str_to_object = {}
for model in Base_model._decl_class_registry.values():
if hasattr(model, '__tablename__'):
mapping_str_to_object[model.__tablename__] = model
msg['data'] = mapping_str_to_object[tableName].getvaluebyxycolumnname(
mapping_str_to_object[tableName],
mapping_str_to_object[tableName],
xColumnName,
yColumnName)
return jsonify(msg)
系统上线前进行了全面的软件测试。重点验证了数据录入的准确性、接口响应的稳定性以及权限控制的严密性。通过对比预期输出与实际结果,修复了部分边界条件下的 Bug,确保了游客体验流畅。
本系统通过整合 Python 生态工具链,实现了对黑龙江旅游资源的数字化管理。不仅提升了数据获取效率,还通过可视化手段辅助决策。对于类似的数据分析项目,这种模块化设计思路具有较高的参考价值。

微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online
生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online
基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online
解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online