赞
踩
博主介绍:✌全网粉丝10W+,前互联网大厂软件研发、集结硕博英豪成立工作室。专注于计算机相关专业毕业设计项目实战6年之久,选择我们就是选择放心、选择安心毕业✌感兴趣的可以先收藏起来,点赞、关注不迷路✌
毕业设计:2023-2024年计算机毕业设计1000套(建议收藏)
毕业设计:2023-2024年最新最全计算机专业毕业设计选题汇总
技术栈:
Flask框架、vue前端框架、Echarts可视化、requests爬虫、snownlp自然语言情绪值分析、hanlp做文字符号处理、numpy、pandas做数据分析处理,mysql数据库,SQLAlchemy用作ORM框架
(1)各地区舆情统计分析
(2)热门舆情话题分析
(3)话题分类占比分析
(4)舆情评论分析
(5)高校舆情分析
(6)数据库数据
微博舆情分析系统,项目后端分爬虫模块、数据分析模块、数据存储模块、业务逻辑模块组成。先后进行了数据获取和筛选存储,对存储后的数据库数据进行提取分析处理等操作,得到符合需要的结构化数据,将处理后的数据根据需要进行分析,得到相关的可视化数据,然后提供对应的接口给前端页面,显示在项目的前端页面中。使用flask进行整个项目框架的构建,爬虫部分模块使用requests官方依赖库进行数据获取,根据微博公开的api接口获取结构化json数据,然后使用pandas对数据进行筛选,处理和分析。
import json from datetime import date, timedelta, datetime from flask import Flask, session, jsonify, request from database.config import db, SQLALCHEMY_DATABASE_URI from model.User import User from analysis import calculate app = Flask(__name__) app.config["SQLALCHEMY_DATABASE_URI"] = SQLALCHEMY_DATABASE_URI app.config["TEMPLATES_AUTO_RELOAD"] = True app.config["SECRET_KEY"] = 'weibo_topic' app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False db.init_app(app) @app.before_first_request def create_tables(): db.create_all() @app.route('/recently', methods=['POST']) def recently_topic(): """ 最近的本周舆情分析 1.舆情指数 2.舆情热搜分析 :return: """ params = request.get_json() dateTime = '2022-5-11T01:10:01' dt = datetime.strptime(dateTime, '%Y-%m-%dT%H:%M:%S').date() data1 = calculate.weekly_hot_topic(dt=dt) data2 = calculate.weekly_topic_total(dt=dt) result = {'code': 20000, 'amount': data2, 'topics': data1} return jsonify(result) @app.route('/wordCloud', methods=['POST']) def weekly_wc(): """ 热搜话题图谱 :return: """ data = calculate.weekly_word_cloud() result = {'code': 20000, 'data': data} return jsonify(result) @app.route('/category', methods=['POST']) def category(): """ 类别占比分析 1.舆情话题的周类别分析 2.正负舆情对比分析 :return: """ param = request.get_json() dateTime = param['datetime'] dateTime = dateTime.split('.')[0] dt = datetime.strptime(dateTime, '%Y-%m-%dT%H:%M:%S').date() data = calculate.weekly_topic_category(mode='week', dt=dt) result = {'code': 20000, 'data': data} return jsonify(result) @app.route('/pop', methods=['POST']) def pop(): """ 正负舆情对比分析 :return: """ param = request.get_json() dateTime = param['datetime'] dateTime = dateTime.split('.')[0] dt = datetime.strptime(dateTime, '%Y-%m-%dT%H:%M:%S').date() # print('pop cal') data = calculate.PositiveOrPassive(dt=dt) return jsonify({'code': 20000, 'data': data}) @app.route('/region', methods=['POST']) def region(): """ 舆情地区统计 :return: """ param = request.get_json() dateTime = param['datetime'] dateTime = dateTime.split('.')[0] dt = datetime.strptime(dateTime, '%Y-%m-%dT%H:%M:%S').date() data = calculate.weekly_topic_region(dt=dt) return jsonify({'code': 20000, 'data': data}) @app.route('/uni_param', methods=['POST', 'GET']) def getUniversityParam(): """ 获取高校参数信息 :return: """ data = calculate.getUniversityParam() result = {'code': 20000, 'data': data} return jsonify(result) @app.route('/comment', methods=['POST']) def commentAnalysis(): """ 评论分析 :return: """ params = request.get_json() topic = params['topic'] data = calculate.getCommentData(topic) result = {'code': 20000, 'data': data} return jsonify(result) @app.route('/university', methods=['POST']) def query_university(): """ 搜索大学热搜 显示该学校的热门话题 返回指定高校的热搜数据 :return: """ param = request.get_json() name = param['name'] data = calculate.getTopicByUniversity(name) result = {'code': 20000, 'data': data} return jsonify(result) @app.route('/logout', methods=['POST']) def logout(): """ 注销 """ session.clear() data = {'data': '', 'code': 20000} return jsonify(data) @app.route('/info', methods=['GET', 'POST']) @app.route('/login', methods=['GET', 'POST']) def login(): data = request.get_json() if (request.method == 'GET') and (session.get('userid') is not None): user = User().userinfo(userid=session['userid']) data = {'data': user.serialize(), 'code': 20000} return jsonify(data) if request.method == 'POST': user = User() user = user.valid_login(username=data['username'], password=data['password']) if user: session['user'] = str(user.username) session['userid'] = str(user.id) data = {'data': user.serialize(), 'code': 20000} return jsonify(data) else: data['error'] = '错误的用户名或密码!' return data @app.route('/') def hello_world(): return 'Hello World!' if __name__ == '__main__': app.run()
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。