一、前言 在当今社会,舆情监控越来越被重视。随着互联网技术的发展,我们从传统媒体渠道、官方报告、调查问卷等方式搜集到的舆情信息,逐渐被网络上的内容所替代。因为网络上的内容传播速度快、及时性强、覆盖范围广,成为了管理者、企业、政府等了解社会大众情绪、掌握市场动向的重要途径。
本文介绍如何基于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请求,发送请求、接收响应。使用以下命令进行安装:
!pip install requests
2.分析数据
在爬取数据前,我们需要分析数据。打开中国大学排名网,点击“大学排名”->“全球排名”,网站链接为:www.zuihaodaxue.com/ARWU2020.ht… 。
从网站中我们可以看到展示的数据大致如下:
我们需要获取的数据列为“排名”、“学校名称”、“所在地区”、“总分”。
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()