一、前言
在当今社会,舆情监控越来越被重视。随着互联网技术的发展,我们从传统媒体渠道、官方报告、调查问卷等方式搜集到的舆情信息,逐渐被网络上的内容所替代。因为网络上的内容传播速度快、及时性强、覆盖范围广,成为了管理者、企业、政府等了解社会大众情绪、掌握市场动向的重要途径。

本文介绍如何基于Flask框架,使用Python语言编写一个高校舆情分析,舆情监控可视化系统。下面主要涉及5个方面:

1.如何使用Python爬取舆情数据;
2.如何通过代理IP提高数据爬取效率;
3.如何使用Flask框架实现舆情监控可视化系统;
4.如何使用MongoDB存储数据;
5.如何使用ECharts实现数据可视化展示。

二、使用Python爬取舆情数据
爬取舆情数据主要有两种方式,一种是直接使用API接口,通过调用API获取相应的数据。另一种方式是使用Python爬取网站上的数据。

本文介绍的是第二种数据获取方式,以爬取中国大学排名网为例。

1.安装requests库

使用Python爬取网站数据,首先需要安装requests库,requests库是Python中的HTTP客户端库,能够模拟HTTP请求,发送请求、接收响应。使用以下命令进行安装:

```python
!pip install requests
```

2.分析数据

在爬取数据前,我们需要分析数据。打开中国大学排名网,点击“大学排名”->“全球排名”,网站链接为:http://www.zuihaodaxue.com/ARWU2020.html 。

从网站中我们可以看到展示的数据大致如下:

我们需要获取的数据列为“排名”、“学校名称”、“所在地区”、“总分”。

3.爬取数据

分析完数据之后,我们就可以开始爬取数据。首先,我们需要导入requests库、BeautifulSoup库。

```python
import requests
from bs4 import BeautifulSoup
```

接着,我们需要设置请求头和请求参数,这里我们设置如下:

```python
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'}
params = {
    'from': 'hao360',
    'ie': 'utf-8',
    'query': 'python'}
```

其中,headers为请求头,用于告诉服务器我们的身份信息,params为请求参数,表示要搜索“python”关键词。

接着,我们使用requests库发送请求,获取网页内容,并解析所需的数据。

```python
url = 'http://www.zuihaodaxue.com/ARWU2020.html'

response = requests.get(url, headers=headers)
response.encoding = response.apparent_encoding

soup = BeautifulSoup(response.text, 'html.parser')

all_university = soup.findAll('tr', {'class': 'bgfd'})
for university in all_university:
    rank = university.find('td', {'align': 'center'}).getText()
    name = university.find('a').getText()
    region = university.find('div', {'style': 'padding-left:10px;'}).getText().strip()
    score = university.findAll('td', {'align': 'center'})[-1].getText()
    print(rank, name, region, score)
```

这样,我们就可以获取到所有大学的排名、学校名称、所在地区、总分数据。

不过需要注意,如果直接爬取网站,可能会被封IP,下一节会介绍如何通过代理IP提高数据爬取效率。

三、通过代理IP提高数据爬取效率

当我们爬取数据时,如果频繁访问同一个网站,可能会被检测到,从而导致IP被封,无法正常访问。这时候,我们可以使用代理IP来避免这个问题,使用代理IP进行数据爬取,可以更好地保护我们的真实IP,达到更好的效果。

1.获取代理IP

在互联网上有很多代理IP提供商,我们可以通过购买代理IP解决被封IP的问题。这里,我们使用的是免费的站大爷代理ip(https://www.zdaye.com/)提供的免费IP。

在站大爷代理网站上,我们可以获得如下信息:

- IP地址
- 端口号
- 区域
- 匿名度
- 类型
- 存活时间
- 验证时间

我们需要使用的是IP地址和端口号,将它们加入到请求头中,即可使用代理IP进行数据爬取。

2.使用代理IP

使用代理IP的方式非常简单,只需要将代理IP加入到请求头中即可。例如,以下代码使用站大爷代理提供的代理IP进行数据爬取:

```python
import requests

url = 'http://www.zuihaodaxue.com/ARWU2020.html'

proxies = {'http': 'http://111.177.190.36:9999', 'https': 'https://111.177.190.36:9999'}
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'}

response = requests.get(url, headers=headers, proxies=proxies)

print(response.text)
```

这里我们设置了一个代理IP,格式为http://IP:port。在发送请求时,通过proxies参数将代理IP加入到请求头中,即可使用代理IP进行数据爬取。

四、使用Flask框架实现舆情监控可视化系统

Flask是一个轻量级的Python Web框架,用于编写基于Web的应用程序。它非常适合小型应用程序和简单的Web服务,同时也可以作为基于大型应用程序的核心。

Flask框架包含了请求分发、模板渲染、数据存取等功能,非常适合开发Web应用程序和API。

在使用Flask框架搭建舆情监控可视化系统时,我们需要安装Flask和pymongo(用于连接MongoDB数据库)库,并使用以下代码创建Flask应用程序:

```python
import json
from flask import Flask, render_template
from pymongo import MongoClient

app = Flask(__name__)

@app.route('/')
def index():
    client = MongoClient('localhost', 27017)
    db = client['university']
    collection = db['ARWU']
    data_list = []
    for data in collection.find():
        del data['_id']
        data_list.append(data)
    return render_template('index.html', data_list=json.dumps(data_list, ensure_ascii=False))

if __name__ == '__main__':
    app.run()
```

其中,localhost代表MongoDB数据库所在的主机名,27017代表MongoDB数据库的端口号。

此外,我们也可以使用request库获取前端传输来的数据,例如:

```python
from flask import request

@app.route('/api/search', methods=['GET'])
def search():
    keyword = request.args.get('keyword')
    client = MongoClient('localhost', 27017)
    db = client['university']
    collection = db['ARWU']
    data_list = []
    for data in collection.find({'name': {'$regex': keyword}}):
        del data['_id']
        data_list.append(data)
    return json.dumps(data_list, ensure_ascii=False)
```

在使用Flask框架时,我们需要创建一个templates文件夹,用于存放html文件,如下所示:

![templates](https://CS0waW1nLmNvbS9BdWxuZXdzL2RlZmF1bHRfc3RvcmUuanBn)

在templates文件夹中,我们需要创建一个index.html文件,用于显示数据。具体代码如下:

```html
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>中国大学排名</title>
    <script src="https://cdn.jsdelivr.net/npm/echarts/dist/echarts.min.js"></script>
    <style>
        /* 设置容器大小 */
        #main {
            height: 600px;
        }
    </style>
</head>
<body>
<!-- 设置一个容器用于展示数据 -->
<div id="main"></div>
<!-- 使用JavaScript渲染表格 -->
<script type="text/javascript">
    // 获取后端传输的数据
    var data = JSON.parse({{data_list}});
    // 初始化echarts图表
    var myChart = echarts.init(document.getElementById('main'));

// 配置图表参数
    var option = {
        tooltip: {},
        legend: {
            data: ['总分']
        },
        xAxis: {
            data: data.map(function (item) {
                return item.name;
            })
        },
        yAxis: {},
        series: [{
            name: '总分',
            type: 'bar',
            data: data.map(function (item) {
                return item.score;
            })
        }]
    };

// 使用刚指定的配置项和数据显示图表。
    myChart.setOption(option);
</script>
</body>
</html>

```

这里,我们使用了ECharts库(https://echarts.apache.org/)来实现数据可视化展示。

最后,在命令行中运行app.py文件,即可启动Flask应用程序。

五、使用MongoDB存储数据

在本例中,我们使用MongoDB作为数据存储方式。MongoDB是一种非关系型数据库,与关系型数据库相比,MongoDB更加灵活、扩展性更好、支持海量数据存储等特点。

在Python中,我们可以使用pymongo库来进行MongoDB的连接和操作。具体代码如下:

```python

from pymongo import MongoClient

client = MongoClient('localhost', 27017)
db = client['university']
collection = db['ARWU']

data = {'rank': '1', 'name': 'Harvard University', 'region': 'USA', 'score': '100'}
collection.insert_one(data)

result = collection.find({'region': 'USA'})
for data in result:
    print(data)

```

在上述代码中,我们首先连接MongoDB,并选择要操作的数据库和集合。然后,我们插入一条数据,并通过find方法查询指定条件的数据。

六、总结

本文介绍了如何使用Python爬取舆情数据,通过使用代理IP提高数据爬取效率。同时,我们还学习了如何使用Flask框架搭建舆情监控可视化系统,以及使用MongoDB存储数据。

这个舆情监控可视化系统还有许多需要完善和改进的地方,例如如何实时更新数据、如何提高数据可视化展示的交互性等等,希望读者能够在此基础上进行更进一步的探索和实践。

Python基于Flask的高校舆情分析,舆情监控可视化系统的更多相关文章

  1. Python基于Flask框架配置依赖包信息的项目迁移部署小技巧

    一般在本机上完成基于Flask框架的代码编写后,如果有接口或者数据操作方面需求需要把代码部署到指定服务器上. 一般情况下,使用Flask框架开发者大多数都是选择Python虚拟环境来运行项目,不同的虚 ...

  2. 基于web3D展示技术的煤矿巷道3D可视化系统

    地下开采离不开巷道工程.煤矿的生产.运输.排水.通风等各个环节都少不了巷道的支持.在煤矿智能化建设被提上日程的今天,巷道工程的智能化.可视化建设也成了行业趋势.尤其是复杂的井下作业环境,人员信息安全问 ...

  3. 搭建一个简单的基于web的网络流量监控可视化系统

    本文转载于我的个人博客,转载请标明出处. 初衷 在腾讯云的学生认证申请提交上去n天之后,终于得到了审批,所以迫不及待的想玩玩腾讯云,作为一个搞网络的,自然有一些关于网络应用的小玩意,所以把以前部署过的 ...

  4. 基于 HTML5 WebGL + WebVR 的 3D 虚实现实可视化系统

    前言 2019 年 VR, AR, XR, 5G, 工业互联网等名词频繁出现在我们的视野中,信息的分享与虚实的结合已经成为大势所趋,5G 是新一代信息通信技术升级的重要方向,工业互联网是制造业转型升级 ...

  5. 基于flask框架的高校舆情分析系统

    系统分析: 高校舆情分析拟实现如下功能,采集微博.贴吧.学校官网的舆情信息,对这些舆情进行数据分析.情感分析,提取关键词,生成词云分析,情感分析图,实时监测舆情动态. 系统设计: 前端:采用layui ...

  6. 基于flask的可视化动漫分析网站【python入门必学】

    课程设计项目名称:基于flask的可视化动漫分析网站,如果你在学习Python的过程中,往往因为没有好的教程或者没人指导从而导致自己容易放弃,为此我建了个Python交流.裙 :一久武其而而流一思(数 ...

  7. 【爬虫+数据清洗+可视化分析】舆情分析哔哩哔哩"狂飙"的评论

    目录 一.背景介绍 二.爬虫代码 2.1 展示爬取结果 2.2 爬虫代码讲解 三.可视化代码 3.1 读取数据 3.2 数据清洗 3.3 可视化 3.3.1 IP属地分析-柱形图 3.3.2 评论时间 ...

  8. Python flask 基于 Flask 提供 RESTful Web 服务

    转载自 http://python.jobbole.com/87118/ 什么是 REST REST 全称是 Representational State Transfer,翻译成中文是『表现层状态转 ...

  9. 基于Python的Flask的开发实战(第二节程序的基本结构)

    1.初始化 所有的flask程序都必须创建一个程序实例 web服务器使用wsgi接口协议,把接收客户端的请求都转发给这个程序实例来进行处理.这个程序实例就是flask对象 from flask imp ...

  10. [转]python实现RESTful服务(基于flask)

    python实现RESTful服务(基于flask) 原文: https://www.jianshu.com/p/6ac1cab17929  前言 上一篇文章讲到如何用java实现RESTful服务, ...

随机推荐

  1. 哈希工具john

    john:一种极其强大且适应性强的哈希破解工具 爆破字典使用臭名昭著的 rockyou.txt 词表--这是一个非常大的常用密码词表 使用的工具 字典:rockyou.txt 哈希识别工具:hash- ...

  2. C#设计模式19——装饰器模式的写法

    装饰器模式(Decorator Pattern)是一种结构型设计模式,它允许你动态地给一个对象添加一些额外的职责,而不需要修改这个对象的代码. What(什么) 装饰器模式是一种结构型设计模式,它允许 ...

  3. ChatGPT 时代,程序员的生存之道 | 人工智能 AI

    前言 ChatGPT 近期炙手可热,仿佛没有什么问题是它不能解决的.出于对 ChatGPT 的好奇,我们决定探索下它对于前端开发人员来讲,是作为辅助工具多一些,还是主力工具更多一些? 2D 能力测试 ...

  4. allure的安装与配置

    一.安装配置JDK 说明:以win10系统为例 1.Oracle官网下载JDK:https://www.oracle.com/java/technologies/downloads/ 请下载安装JDK ...

  5. selenium4-获取页面元素相关信息

    本小节我们简单说下如何使用selenium4-获取页面元素相关信息,以及获取页面元素的相关信息后可以做什么. 获取页面元素的主要目的:(1)执行完步骤后进行断言:(2)获取前一步骤的响应结果作为后续步 ...

  6. 性能优化之window.onload

    前言 最近在做一些性能优化相关的工作,相信大家在工作过程中也会遇到一些性能优化相关的场景,这对于前端开发者来讲是一项加分技能.为了我们的用户在使用我们的产品时能够有一个非常好的体验,我们需要对页面进行 ...

  7. JavaScript 整理的基础的方法

    innerHTML //innerHTML 属性设置或返回表格行的开始和结束标签之间的 HTML. innertext//innerText 属性返回文本值 没有结构信息 $("#test& ...

  8. Hugging News #0703: 在浏览器中运行 Whisper 模型、WAIC 分论坛活动邀请报名

    每一周,我们的同事都会向社区的成员们发布一些关于 Hugging Face 相关的更新,包括我们的产品和平台更新.社区活动.学习资源和内容更新.开源库和模型更新等,我们将其称之为「Hugging Ne ...

  9. 即构✖叮咚课堂:行业第一套AI课堂解决方案是怎么被实现的?

    AI走进教育,是传统教育的一次迭代进化 在教育问题上,我们看到两类话题最容易引发公众讨论:教育公平和个性化教育,"互联网+教育"有可能解决第一类话题,"AI教育" ...

  10. 利用python的PyPDF2和PyMuPDF库玩转PDF的提取、合并、旋转、缩放、加密

    一.安装PyPDF2和PyMuPDF库 pip install PyPDF2 pip install pymupdf # fitz是pymupdf的子模块 二.工具类代码 from PyPDF2 im ...