博主介绍:✌全网粉丝10W+,前互联网大厂软件研发、集结硕博英豪成立工作室。专注于计算机相关专业项目实战6年之久,选择我们就是选择放心、选择安心毕业✌
> 🍅想要获取完整文章或者源码,或者代做,拉到文章底部即可与我联系了。🍅🍅感兴趣的可以先收藏起来,点赞、关注不迷路,大家在毕设选题,项目以及论文编写等相关问题都可以给我留言咨询,希望帮助同学们顺利毕业 。🍅
1、毕业设计:2025年计算机专业毕业设计选题汇总(建议收藏)✅
2、大数据毕业设计:2025年选题大全 深度学习 python语言 JAVA语言 hadoop和spark(建议收藏)✅
1、项目介绍
1、关键技术
-
前端: Vue + Echarts + BaiduMap + Axios
-
后端: Flask + SQLAlchemy
-
爬虫: python + bs4
-Vue、Echarts、 Axios、 Baidu地图API(HeatMap热力图)
Flask、 SQLAlchemy 、Marshmallow、BeautifulSoup4
2、系统功能
可视化:
(1)数据可视化,实现中国地图、动态柱状图、饼图、环图、漏斗图等方式对数据库数据分析
(2)百度热力图展示景点销售数据
爬虫: 去哪儿网热门景点数据爬虫,解析后存储入mysql数据库中
实现功能
(1)爬虫:爬取去哪儿网的热门景点数据,存储在MySQL数据库中
(2)Flask后端:对MySQL数据库中存储的数据进行提取,对前端提供接口
(3)可视化1: 实现景点数据的多维度分析后使用Echarts来进行可视化
(4)可视化2: 实现百度热力图的展示
2、项目界面
(1)旅游数据分析大屏
(2)热力图分析
(3)数据采集
(4)数据表
3、项目说明
1、系统功能
可视化:
(1)数据可视化,实现中国地图、动态柱状图、饼图、环图、漏斗图等方式对数据库数据分析
(2)百度热力图展示景点销售数据
爬虫: 去哪儿网热门景点数据爬虫,解析后存储入mysql数据库中
实现功能
(1)爬虫:爬取去哪儿网的热门景点数据,存储在MySQL数据库中
(2)Flask后端:对MySQL数据库中存储的数据进行提取,对前端提供接口
(3)可视化1: 实现景点数据的多维度分析后使用Echarts来进行可视化
(4)可视化2: 实现百度热力图的展示
2 、关键技术
-
前端: Vue + Echarts + BaiduMap + Axios
-
后端: Flask + SQLAlchemy
-
爬虫: python + bs4
-Vue、Echarts、 Axios、 Baidu地图API(HeatMap热力图)
Flask、 SQLAlchemy 、Marshmallow、BeautifulSoup4
4、核心代码
from flask import Flask, request, jsonify
from flask_sqlalchemy import SQLAlchemy
from flask_marshmallow import Marshmallow
from sqlalchemy.sql import func
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql+pymysql://root:123456@localhost/baidumap_tour'
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
app.config['JSON_AS_ASCII'] = False
db = SQLAlchemy(app)
ma = Marshmallow(app)
class Tour(db.Model):
__tablename__ = 'tb_tour' # 表名
id = db.Column(db.Integer, primary_key=True, autoincrement=True)
name = db.Column(db.String(500))
grade = db.Column(db.String(20))
address = db.Column(db.String(500))
intro = db.Column(db.String(500))
hot = db.Column(db.DECIMAL)
price = db.Column(db.DECIMAL)
msold = db.Column(db.Integer)
lng = db.Column(db.DECIMAL)
lat = db.Column(db.DECIMAL)
img = db.Column(db.String(500))
province = db.Column(db.String(90))
city = db.Column(db.String(90))
district = db.Column(db.String(90))
def __init__(self, name, grade, address, intro, hot, price, msold, lng, lat, img, province, city, district):
self.name = name
self.grade = grade
self.address = address
self.intro = intro
self.hot = hot
self.price = price
self.msold = msold
self.lng = lng
self.lat = lat
self.img = img
self.province = province
self.city = city
self.district = district
class TaskSchema(ma.Schema):
class Meta:
fields = ('name', 'grade')
task_schema = TaskSchema()
tasks_schema = TaskSchema(many=True)
class ChartSchema(ma.Schema):
class Meta:
fields = ('city', 'lng', 'lat')
chart_schema = ChartSchema()
chart_schema = ChartSchema(many=True)
class RankSchema(ma.Schema):
class Meta:
fields = ('name', 'value')
rank_schema = RankSchema()
rank_schema = RankSchema(many=True)
class HotSchema(ma.Schema):
class Meta:
fields = ('lng', 'lat', 'count')
hot_schema = HotSchema()
hot_schema = HotSchema(many=True)
@app.route('/')
def hello_world(): # put application's code here
result = db.session.query(Tour.city, func.count('*').label('value')).group_by(Tour.city).filter(Tour.city != '').all()[:5]
return jsonify(chart_schema.dump(result)), 200
@app.route('/hot_tour')
def hot_tour_site(): # put application's code here
result = db.session.query(Tour.city, Tour.lng, Tour.lat).order_by(Tour.msold.desc()).all()[:30]
# print(result)
chart_schema.dump(result)
return jsonify(chart_schema.dump(result))
@app.route('/city_rank')
def city_rank(): # put application's code here
result = db.session.query(Tour.city.label("name"), func.sum(Tour.msold).label('value')).group_by(Tour.city).filter(Tour.city != '').all()[:20]
# print(result)
rank_schema.dump(result)
return jsonify(rank_schema.dump(result))
@app.route('/tour_rank')
def tour_rank(): # put application's code here
result = db.session.query(Tour.name, func.sum(Tour.msold).label('value')).group_by(Tour.name).filter(Tour.city != '').all()[:20]
# print(result)
rank_schema.dump(result)
return jsonify(rank_schema.dump(result))
@app.route('/province_rank', methods=['POST'])
def province_rank(): # put application's code here
province = request.json['province']
result = db.session.query(Tour.name, func.sum(Tour.msold).label('value')).group_by(Tour.name).\
filter(Tour.province == province).all()[:10]
# result2 = db.session.query(Tour.name, func.sum(Tour.msold).label('value')).group_by(Tour.name). \
# filter(Tour.province == '海南').all()[:10]
# result3 = db.session.query(Tour.name, func.sum(Tour.msold).label('value')).group_by(Tour.name). \
# filter(Tour.province == '上海').all()[:10]
return jsonify(rank_schema.dump(result))
@app.route('/district_rank')
def district_rank(): # put application's code here
result = db.session.query(Tour.district.label('name'), func.sum(Tour.msold).label('value')).group_by(Tour.district).\
filter(Tour.district != '').order_by(func.sum(Tour.msold)).all()[:10]
return jsonify(rank_schema.dump(result))
@app.route('/hotPlaceData')
def hotPlaceData(): # put application's code here
result = db.session.query( Tour.lng, Tour.lat, Tour.msold.label('count')).order_by(Tour.msold.desc()).all()[:30]
# print(result)
return jsonify(hot_schema.dump(result)
)
if __name__ == '__main__':
app.run()
5、源码获取方式
🍅由于篇幅限制,获取完整文章或源码、代做项目的,查看【用户名】、【专栏名称】、就可以找到我啦🍅
感兴趣的可以先收藏起来,点赞、关注不迷路,查看下方👇🏻👇🏻