Python基于Flask的高校舆情分析,舆情监控可视化系统

本文涉及的产品
云数据库 MongoDB,通用型 2核4GB
云数据库 MongoDB,独享型 2核8GB
推荐场景:
构建全方位客户视图
简介: Python基于Flask的高校舆情分析,舆情监控可视化系统

一、前言


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

本文介绍如何基于Flask框架,使用Python语言编写一个高校舆情分析,舆情监控可视化系统。


二、使用Python获取舆情数据


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


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


1.安装requests库


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

!pip install requests

2.分析数据


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

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

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


3.获取数据


首先,我们需要导入requests库、BeautifulSoup库。

import requests
from bs4 import BeautifulSoup

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

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库发送请求,获取网页内容,并解析所需的数据。

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,达到更好的效果。


1.获取代理IP


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


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


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


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


2.使用代理IP


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

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应用程序:

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库获取前端传输来的数据,例如:

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文件,用于显示数据。具体代码如下:

<!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的连接和操作。具体代码如下:

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存储数据。


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


相关实践学习
MongoDB数据库入门
MongoDB数据库入门实验。
快速掌握 MongoDB 数据库
本课程主要讲解MongoDB数据库的基本知识,包括MongoDB数据库的安装、配置、服务的启动、数据的CRUD操作函数使用、MongoDB索引的使用(唯一索引、地理索引、过期索引、全文索引等)、MapReduce操作实现、用户管理、Java对MongoDB的操作支持(基于2.x驱动与3.x驱动的完全讲解)。 通过学习此课程,读者将具备MongoDB数据库的开发能力,并且能够使用MongoDB进行项目开发。 &nbsp; 相关的阿里云产品:云数据库 MongoDB版 云数据库MongoDB版支持ReplicaSet和Sharding两种部署架构,具备安全审计,时间点备份等多项企业能力。在互联网、物联网、游戏、金融等领域被广泛采用。 云数据库MongoDB版(ApsaraDB for MongoDB)完全兼容MongoDB协议,基于飞天分布式系统和高可靠存储引擎,提供多节点高可用架构、弹性扩容、容灾、备份回滚、性能优化等解决方案。 产品详情: https://www.aliyun.com/product/mongodb
相关文章
|
7天前
|
监控 前端开发 API
实战指南:使用Python Flask与WebSocket实现高效的前后端分离实时系统
【7月更文挑战第18天】构建实时Web应用,如聊天室,可借助Python的Flask和WebSocket。安装Flask及Flask-SocketIO库,创建Flask应用,处理WebSocket事件。前端模板通过Socket.IO库连接服务器,发送和接收消息。运行应用,实现实时通信。此示例展现了Flask结合WebSocket实现前后端实时交互的能力。
|
1天前
|
数据可视化 数据挖掘 Python
数据界的颜值担当!Python数据分析遇上Matplotlib、Seaborn,可视化美出新高度!
【7月更文挑战第24天】在数据科学领域,Python的Matplotlib与Seaborn将数据可视化升华为艺术,提升报告魅力。Matplotlib作为基石,灵活性强,新手友好;代码示例展示正弦波图的绘制与美化技巧。Seaborn针对统计图表,提供直观且美观的图形,如小提琴图,增强数据表达力。两者结合,创造视觉盛宴,如分析电商平台销售数据时,Matplotlib描绘趋势,Seaborn揭示类别差异,共塑洞察力强的作品,使数据可视化成为触动人心的艺术。
17 7
|
2天前
|
编解码 数据可视化 API
Python可视化
【7月更文挑战第18天】Python可视化在数据科学中至关重要,不仅揭示数据模式,还通过样式化增强吸引力。Matplotlib、Seaborn、Plotly及Bokeh等库提供多样样式化技巧,如自定义颜色、线条、图例,以及交互性,助您打造美观、易读的图表。从基本图表到复杂应用,Python工具包丰富,提升数据故事讲述能力。掌握这些技巧,让您的数据可视化更加出色,深入挖掘数据价值。🚀📊💡
10 1
|
11天前
|
自然语言处理 程序员 编译器
`pylatex`是一个Python库,用于生成LaTeX文档。LaTeX是一种用于高质量排版和打印的文档准备系统,特别适用于科学、技术和数学文档。
`pylatex`是一个Python库,用于生成LaTeX文档。LaTeX是一种用于高质量排版和打印的文档准备系统,特别适用于科学、技术和数学文档。
|
14天前
|
机器学习/深度学习 数据采集 数据可视化
Python实现支持向量机SVM分类模型线性SVM决策过程的可视化项目实战
Python实现支持向量机SVM分类模型线性SVM决策过程的可视化项目实战
Python实现支持向量机SVM分类模型线性SVM决策过程的可视化项目实战
|
3天前
|
分布式计算 数据可视化 数据挖掘
Python 中的可视化
【7月更文挑战第17天】Python的可视化数据分析流程涵盖数据获取、清洗、分析到洞见展示。使用pandas处理CSV、数据库等源数据,matplotlib和seaborn辅助识别模式。数据分析与建模阶段,通过统计和机器学习技术揭示数据关系,利用seaborn热图洞察特征关联。结果呈现时,Plotly增强交互体验。进阶技巧包括Plotly Express图表定制、Jupyter中的Interact交互及Altair、Bokeh等库的使用。自动化与批量处理依赖循环、函数、Dask或Spark。最佳实践强调图表选择、简洁性、文档记录和性能优化。部署成果可生成静态报告、创建Dash/Streamli
9 0
|
4天前
|
数据可视化 数据挖掘 定位技术
Python 中的地理信息系统
【7月更文挑战第16天】 - GIS在地图制作、空间分析及各行业(如城市规划、资源管理)中至关重要。 - Python凭借其易用性和丰富库(如Geopandas、Matplotlib、Folium)简化了地理数据处理和可视化。 - 开发者需先安装Geopandas、Matplotlib和Folium库。 - Geopandas用于数据处理,Matplotlib绘制静态地图,Folium创建交互式地图。 - 示例代码展示了地图绘制、数据整合、空间查询、动态
19 0
|
10天前
|
监控 网络协议 安全
由于楼层自动化系统的复杂性和多样性,很难给出一个通用的Python代码示例,因为每个系统可能使用不同的硬件、通信协议和软件接口。
由于楼层自动化系统的复杂性和多样性,很难给出一个通用的Python代码示例,因为每个系统可能使用不同的硬件、通信协议和软件接口。
|
10天前
|
存储 关系型数据库 数据库
我将提供一个简化的Python代码示例和详解,以展示如何使用Python和Django框架来构建智能化小区综合物业管理系统的一部分功能。
我将提供一个简化的Python代码示例和详解,以展示如何使用Python和Django框架来构建智能化小区综合物业管理系统的一部分功能。
|
2月前
|
机器学习/深度学习 存储 数据可视化
数据分享|Python在Scikit-Learn可视化随机森林中的决策树分析房价数据
数据分享|Python在Scikit-Learn可视化随机森林中的决策树分析房价数据