├── .gitignore ├── README.md ├── babel.config.js ├── jsconfig.json ├── package-lock.json ├── package.json ├── public ├── favicon.ico ├── index.html ├── reset.css └── static │ ├── china.json │ ├── css │ ├── materialdesignicons.min.css │ ├── select2-bootstrap.min.css │ ├── select2.min.css │ ├── style.css │ ├── typicons.css │ └── vendor.bundle.base.css │ ├── font │ ├── Roboto-Black.eot │ ├── Roboto-Black.ttf │ ├── Roboto-Black.woff │ ├── Roboto-Black.woff2 │ ├── Roboto-Bold.eot │ ├── Roboto-Bold.ttf │ ├── Roboto-Bold.woff │ ├── Roboto-Bold.woff2 │ ├── Roboto-Light.eot │ ├── Roboto-Light.ttf │ ├── Roboto-Light.woff │ ├── Roboto-Light.woff2 │ ├── Roboto-Medium.eot │ ├── Roboto-Medium.ttf │ ├── Roboto-Medium.woff │ ├── Roboto-Medium.woff2 │ ├── Roboto-Regular.eot │ ├── Roboto-Regular.ttf │ ├── Roboto-Regular.woff │ ├── Roboto-Regular.woff2 │ ├── materialdesignicons-webfont.eot │ ├── materialdesignicons-webfont.ttf │ ├── materialdesignicons-webfont.woff │ ├── materialdesignicons-webfont.woff2 │ ├── typicons.eot │ ├── typicons.ttf │ └── typicons.woff │ ├── image │ ├── lockscreen-bg.jpg │ ├── login-bg.jpg │ └── register-bg.jpg │ ├── js │ ├── Chart.min.js │ ├── chart.js │ ├── dashboard.js │ ├── file-upload.js │ ├── hoverable-collapse.js │ ├── off-canvas.js │ ├── progressbar.min.js │ ├── select2.js │ ├── select2.min.js │ ├── settings.js │ ├── template.js │ ├── todolist.js │ ├── typeahead.bundle.min.js │ ├── typeahead.js │ └── vendor.bundle.base.js │ └── picture │ ├── face1.jpg │ ├── face2.jpg │ ├── face29.jpg │ ├── face291.png │ ├── face3.jpg │ ├── face30.png │ ├── face31.png │ ├── face32.png │ ├── face33.png │ ├── face34.png │ ├── face4.jpg │ ├── face5.jpg │ ├── face6.jpg │ ├── face7.jpg │ ├── logo-mini.svg │ └── logo.svg ├── src ├── App.vue ├── api │ ├── index.js │ └── request.js ├── assets │ ├── b1.jpg │ └── logo.png ├── components │ ├── CategorySelect │ │ └── index.vue │ ├── Charts │ │ ├── index.vue │ │ └── mapChart │ │ │ └── index.vue │ ├── NavBar │ │ └── index.vue │ ├── SideBar │ │ └── index.vue │ └── Theme │ │ └── index.vue ├── main.js ├── pages │ ├── authority │ │ └── index.vue │ ├── first │ │ └── index.vue │ ├── home │ │ └── index.vue │ ├── login │ │ └── index.vue │ ├── modification │ │ └── index.vue │ ├── opinion │ │ └── index.vue │ ├── register │ │ └── index.vue │ ├── topic │ │ └── index.vue │ └── user │ │ └── index.vue ├── store │ └── index.js ├── style │ ├── materialdesignicons.min.css │ ├── select2-bootstrap.min.css │ ├── select2.min.css │ ├── style.css │ ├── typicons.css │ └── vendor.bundle.base.css └── utils │ └── index.js └── vue.config.js /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | node_modules 3 | /dist 4 | 5 | 6 | # local env files 7 | .env.local 8 | .env.*.local 9 | 10 | # Log files 11 | npm-debug.log* 12 | yarn-debug.log* 13 | yarn-error.log* 14 | pnpm-debug.log* 15 | 16 | # Editor directories and files 17 | .idea 18 | .vscode 19 | *.suo 20 | *.ntvs* 21 | *.njsproj 22 | *.sln 23 | *.sw? 24 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # weibo_visualization 2 | 项目简介:一个Web端微博数据可视化平台。对Python爬虫得到的微博热搜以及热门话题评论等数据进行展示:包括指定话题在不同时间下热度的统计图表(显示热度随时间变化的关系),近一小时微博热搜热度变化的动态图表等;同时使用SinglePass算法对同一话题的评论内容进行聚类分析,提取主要的五个簇,并分析文本相似性,对每个簇的摘要进行展示。 3 | 4 | ## 首页 5 | 1、在用户登录操作之后,前端拿到用户token,将token持久化存储在localstorage中。随后登录进入首页。 6 | 7 | 8 | 2、首页主要展示微博热搜排行及动态排序、不同地区的微博话题关键词等。 9 |  10 |  11 | 12 | ## 话题分类统计 13 | 1、统计不同分类中不同话题下的微博信息:包括用户名、微博内容、点赞数、评论数、微博链接(可以进行点击跳转)。 14 | 15 | 16 | 2、做不同分类下的统计图表。 17 |  18 |  19 | 20 | 21 | ## 舆情走势分析 22 | 1、分析不同关键词下舆情的变化(热度随时间的变化情况)、展示此话题下影响力最高的5个用户。 23 | 24 | 25 | 2、利用singlepass算法将该话题下的微博内容进行聚类,得到该话题下按照相似信息总数降序top5的微博内容,并对每个聚类簇进行摘要总结。 26 |  27 |  28 | 29 | 30 | ## 微博用户分析 31 | 1、从年龄、性别、增长率这几个方面分析微博用户数量的走势。 32 | 33 | 34 | 2、展示微博日活跃用户与月活跃用户。 35 |  36 | 37 | 38 | ## 项目初始化 39 | ``` 40 | npm install 41 | ``` 42 | 43 | ### 项目运行 44 | ``` 45 | npm run serve 46 | ``` 47 | 48 | -------------------------------------------------------------------------------- /babel.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | presets: [ 3 | '@vue/cli-plugin-babel/preset' 4 | ] 5 | } 6 | -------------------------------------------------------------------------------- /jsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "es5", 4 | "module": "esnext", 5 | "baseUrl": "./", 6 | "moduleResolution": "node", 7 | "paths": { 8 | //给src文件夹起别名 但是node_modules与dist文件夹中不可以用@ 9 | "@/*": [ 10 | "src/*" 11 | ] 12 | }, 13 | "lib": [ 14 | "esnext", 15 | "dom", 16 | "dom.iterable", 17 | "scripthost" 18 | ] 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "weibo_visualization", 3 | "version": "0.1.0", 4 | "private": true, 5 | "scripts": { 6 | "serve": "vue-cli-service serve", 7 | "build": "vue-cli-service build", 8 | "lint": "vue-cli-service lint" 9 | }, 10 | } 11 | -------------------------------------------------------------------------------- /public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HeartQiann/weibo_visualization/992b87a509cc54979cc2b74101519359df3fba4c/public/favicon.ico -------------------------------------------------------------------------------- /public/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 |
4 | 5 | 6 | 7 | 8 |侧边栏皮肤
8 | 12 | 16 |标题栏背景色
17 |