Python+Flask构建重庆旅游景点数据分析系统实战
1. 项目概述重庆旅游景点数据分析系统去年夏天我接了个重庆本地旅行社的需求他们想通过数据手段了解各景点的实时热度、游客评价和交通状况。于是我用PythonFlask搭建了这个旅游景点数据分析系统核心功能包括爬虫数据采集、清洗存储、可视化展示三大模块。这个项目特别适合想学习Web数据分析全流程的Python开发者尤其是掌握基础语法后想实战Flask框架的朋友。系统从携程、美团等平台抓取重庆30热门景点的票价、评论、周边酒店等数据经过清洗后存入MySQL最后用ECharts生成动态图表。整个过程涉及Requests爬虫、Pandas数据处理、Flask路由设计等关键技术点下面我会详细拆解各模块的实现逻辑和踩坑经验。2. 核心架构设计2.1 技术栈选型理由Flask框架相比Django更轻量适合快速开发数据API路由定义仅需30行代码MySQL 8.0支持JSON字段存储爬取的原始数据方便后续扩展分析维度ECharts.js百度开源的动态图表库配合Pyecharts可生成热力图等复杂可视化Requests-HTML比Scrapy更简单的爬虫方案内置XPath和异步请求支持注意重庆景点数据有较强的地域特征需特别关注洪崖洞、长江索道等网红景点的数据波动2.2 系统流程图解数据流爬虫 → 数据清洗 → MySQL → Flask API → 前端展示 ↑____________定时任务___________↓3. 爬虫模块实现细节3.1 多平台数据抓取用Requests-HTML同时采集三个平台数据from requests_html import HTMLSession def crawl_ctrip(): session HTMLSession() url https://you.ctrip.com/sight/chongqing158.html r session.get(url, headersrandom_headers()) # 使用XPath提取景点评分 rating r.html.xpath(//div[classcommentScore]/span/text())[0] return float(rating.replace(分, ))关键参数说明random_headers()包含随机User-Agent的反反爬函数重庆景点页面的特殊处理需要模拟滑动验证码后续会讲破解方案3.2 数据清洗技巧原始数据常见问题点评中的重庆方言如巴适得板→5星票价包含季节性浮动冬季武隆景区有折扣GPS坐标有多种格式高德/百度/腾讯坐标系清洗代码示例def clean_price(text): # 处理¥198起这类字符串 return float(re.search(r¥(\d), text).group(1)) def convert_gps(gd_lat, gd_lng): # 高德坐标转百度坐标重庆地图专用 x_pi 3.14159265358979324 * 3000.0 / 180.0 x float(gd_lng) - 0.0065 y float(gd_lat) - 0.006 # ...省略坐标转换公式... return bd_lat, bd_lng4. Flask后端开发实录4.1 路由设计要点app.route(/api/scenic/int:id) def get_scenic_data(id): # 加入缓存机制应对重庆旅游旺季的高并发 cache_key fscenic_{id} data cache.get(cache_key) if not data: data db.query_scenic_by_id(id) cache.set(cache_key, data, timeout3600) return jsonify(data)性能优化技巧使用Redis缓存热门景点数据洪崖洞的QPS可达200针对磁器口等古镇类景点采用分页加载评论数据4.2 数据库模型class ScenicSpot(db.Model): __tablename__ chongqing_scenic id db.Column(db.Integer, primary_keyTrue) name db.Column(db.String(80), uniqueTrue) # 景点名称 heat_index db.Column(db.Float) # 热度指数 raw_data db.Column(db.JSON) # 原始爬虫数据 def __repr__(self): return f景点 {self.name}5. 可视化前端开发5.1 ECharts配置技巧重庆景点热力图配置示例option { tooltip: { formatter: function(params) { // 重庆方言特色提示框 return params.name 安逸指数 params.value[2] } }, visualMap: { pieces: [{ min: 0, max: 3, label: 人少, color: #50a3ba },{ min: 3, max: 6, label: 适中, color: #eac736 }] } }5.2 重庆特色数据展示网红景点打卡时段分析洪崖洞最佳拍摄时间在19:00-21:00轨道交通关联度显示各景点最近的地铁站重庆地形特殊需标注海拔方言词云图从评论中提取巴适、要得等特色词汇6. 部署与运维经验6.1 重庆服务器选择推荐腾讯云重庆机房延迟5ms注意备份策略每日凌晨3点自动备份避开旅游平台数据更新时段6.2 常见问题排查爬虫被封IP解决方案使用重庆本地ADSL拨号代理池验证方法ping you.ctrip.com -t观察延迟波动坐标偏移问题# 重庆地图纠偏参数与其他城市不同 CQ_OFFSET (0.0032, 0.0041)方言处理异常建立重庆方言词库{巴适:5, 麻麻鱼:2}7. 项目扩展方向实时人流预测接入重庆轨道交通API预测景点拥挤度旅游路线推荐基于游客停留时间生成个性化路线考虑山城地形方言情感分析专门处理霸道、不摆了等特色评价词我在项目上线后发现个有趣现象工作日的长江索道热度反而高于周末因为本地人通勤也会使用。这提醒我们做旅游数据分析时不能简单套用其他城市的模型。

相关新闻

Vite构建工具配置详解与性能优化实践

Vite构建工具配置详解与性能优化实践

1. Vite构建工具的核心价值解析作为新一代前端构建工具,Vite凭借其原生ES模块支持和闪电般的冷启动速度,正在快速改变前端开发体验。与传统构建工具相比,Vite在开发环境下直接利用浏览器原生ESM能力,省去了打包环节;生…

2026/10/27 13:38:09 阅读更多 →
碳化硅半导体:特性、应用与产业化挑战

碳化硅半导体:特性、应用与产业化挑战

1. 碳化硅半导体为何成为行业新宠2008年,当我第一次在实验室接触碳化硅晶圆时,手指不小心被边缘划破——这个看似不起眼的小伤口,却让我深刻记住了这种材料的硬度特性。如今十五年过去,碳化硅(SiC)已从实验…

2026/10/25 4:58:03 阅读更多 →
CTF竞赛入门:赛制解析与实战学习路线

CTF竞赛入门:赛制解析与实战学习路线

1. CTF竞赛入门指南:从零开始的夺旗之旅第一次听说CTF(Capture The Flag)时,我误以为这是某种真人CS游戏。直到2016年参加校内选拔赛,才真正理解这项结合密码学、逆向工程、Web渗透等技术的网络安全竞赛。作为过来人&a…

2026/10/25 17:43:56 阅读更多 →

最新新闻

Electron桌面应用开发实战:从环境搭建到打包发布全流程

Electron桌面应用开发实战:从环境搭建到打包发布全流程

做前端这些年,我大部分时间都在跟浏览器标签页打交道,直到第一次把桌面应用跑起来,才发现原来自己一直被限制在地址栏和刷新按钮围起来的框框里。Electron这个词,最开始是在某段时间频繁出现在同事的讨论里,一个用HTML…

2026/10/26 12:00:21 阅读更多 →
滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

简介:亚太天能T109滑盖智能锁产品说明书是一份PDF格式的官方技术文档,主要面向智能锁安装人员、终端用户及售后维护者,帮助快速掌握产品安装、配置与常见故障处理。全包仅1个PDF文件,大小4.37MB,内容结构清晰&#xff…

2026/10/27 4:06:49 阅读更多 →
PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

上个月我在调试一台高速AGV的驱动系统,整车要求空载跑到8m/s,电机转速已经拉到额定点,驱动器的输出电压也顶到了母线电压极限附近。再往上踩速度指令,转速纹丝不动,三相电流反而开始震荡。那会儿我的第一反应就是&…

2026/10/27 7:21:53 阅读更多 →
C++核心知识点:从内存管理到STL的实战指南

C++核心知识点:从内存管理到STL的实战指南

C 这门语言我前前后后折腾了十几年,用它写过嵌入式驱动、做过游戏服务端,也搭过基础组件库。每次看到新人一头扎进"C 核心知识点"这个搜索词,我其实挺感慨的——这门语言的难点从来不是语法多,而是知识点之间的耦合太深…

2026/10/26 12:00:21 阅读更多 →
T109滑盖智能锁怎么装?安装调试与故障排查全攻略

T109滑盖智能锁怎么装?安装调试与故障排查全攻略

简介:亚太天能T109滑盖智能锁产品说明书以PDF格式发布,适合智能锁用户、安装人员与售后维修人员阅读。内容围绕T109系列指纹密码刷卡锁展开,先介绍前面板、后面板、锁体、机械钥匙、电池盒盖等部件名称与功能,再给出完整安装步骤&…

2026/10/27 6:20:47 阅读更多 →
LLM知识降熵:从信息垄断到理解权下放

LLM知识降熵:从信息垄断到理解权下放

你有没有过这种经历:翻开源码注释、论文摘要或者一份专业报告,每个字都认识,连在一起却像天书。想找人聊聊,身边要么没人懂,要么懂的懒得跟你解释。后来我试着把同一段内容丢给一个大语言模型,几秒钟之后&a…

2026/10/27 4:06:50 阅读更多 →

日新闻

周新闻

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/26 12:00:19 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/27 7:21:50 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/26 8:34:37 阅读更多 →