基于Python的舆情监测系统设计.docx
- 文档编号:7640802
- 上传时间:2023-05-11
- 格式:DOCX
- 页数:19
- 大小:77.16KB
基于Python的舆情监测系统设计.docx
《基于Python的舆情监测系统设计.docx》由会员分享,可在线阅读,更多相关《基于Python的舆情监测系统设计.docx(19页珍藏版)》请在冰点文库上搜索。
基于Python的舆情监测系统设计
基于Python的舆情监测系统设计
摘要
随着各种网络社交媒体的日益发展与推广以及云计算、大数据技术的发展,通过挖掘获取社交大数据并进行数据分析来及时检测当前舆论动向及事态成为了当前学术界、工业界重点关注的技术之一。
数据采集、数据分析以及可视化展示都是舆情监测系统的关键环节。
本文通过实现数据采集模块、数据分析模块和数据可视化模块来实现舆情监测,来实现对社交网络的舆情监控。
本文主要内容包括一下几点:
首先,数据采集模块相关技术的介绍。
本文介绍了通过自动获取网页内容的程序来实现对网页信息的采集;通过改写网页数据请求头(requesthead)中的User-Agent、Referer及Cookie来实现网络数据的连续采集;并通过正则表达式和将HTML文档转换成一个树形结构的方法来实现网页数据的定位及获取。
同时研究了XML及JSON页面分析技术和非关系型数据库(MongoDB)等数据采集存储技术。
再次,通过对获取的文本信息进行分词处理,提取高频词汇及其他信息来实现对数据的分析;通过利用文本信息时间来实现对舆情状况的中长期分析。
最后,通过搭建web网络框架,来建立网络服务器。
除此之外通过html、Echart及JQuery等网络前端技术来实现数据的可视化展示。
关键词:
数据采集;非关系型数据库;正则表达式;Flask;HTML
Abstract
Withtheincreasingdevelopmentandpromotionofvariousnetworksocialmedia,aswellasthedevelopmentofcloudcomputingandbigdatatechnology,ithasbecomeoneofthekeytechnologiesthattheacademiaandindustryfocusontotimelydetectthecurrenttrendofpublicopinionandeventsbyminingsocialbigdataandconductingdataanalysis.Datacollection,dataanalysisandvisualdisplayarethekeylinksofpublicopinionmonitoringsystem.Thispaperrealizespublicopinionmonitoringbyimplementingdataacquisitionmodule,dataanalysismoduleanddatavisualizationmodule,andrealizespublicopinionmonitoringonsocialnetwork.Themaincontentofthispaperincludesthefollowingpoints:
First,theintroductionofdataacquisitionmodulerelatedtechnology.Thispaperintroducestheprogramofautomaticallyacquiringwebcontenttorealizethecollectionofwebinformation.Theuser-agent,RefererandCookieintherequestheadareoverwrittentorealizethecontinuouscollectionofnetworkdata.AndthroughregularexpressionandHTMLdocumentintoatreestructuremethodtoachievethelocationandacquisitionofwebdata.Atthesametime,XMLandJSONpageanalysistechnologyandnon-relationaldatabase(MongoDB)dataacquisitionandstoragetechnologyarestudied.
Thirdly,theobtainedtextinformationisprocessedbywordsegmentation,andhigh-frequencywordsandotherinformationareextractedtorealizedataanalysis.Throughtheuseoftextinformationtimetoachievemediumandlongtermanalysisofpublicopinion.
Finally,thenetworkserverisestablishedbysettingupthewebnetworkframework.Inaddition,HTML,Echart,JQueryandothernetworkfront-endtechnologiesareusedtorealizethevisualdisplayofdata.
Keywords:
DataAcquisition;NotStructuredQueryLanguage;RegularExpression;Flask;HTML
第1章绪论
1.1课题背景及意义
舆情监测系统是基于Python语言编写的互联网舆情监测统计系统,相比于之前的人工舆情统计分析形同,基于Python的舆情检测系统在工作范围、舆情监测速度方面具有极大的提升。
除此之外基于Python还具有误差概率小、全天候24小时不间断工作的特点。
伴随计算机科学技术和互联网应用的高速发展,互联网舆情监测系统也同样发展迅速飞快。
基于网络的大数据舆情监测系统具有处理实时性强、数据处理大的优点。
该系统通过很细很多相同需求下的舆情监测的需求而实现,拥有一部分的实际工程意义。
1.2课题研究现状与发展趋势
网络舆情是指由各种不同的社会团体所组成的公众群体和舆论代表,在某些特定的时间和空间或网络范围中,对自己关注的或与自身个体利益紧密相关的各种社会实践政府中策或社会问题的具有一定影响力和导向性的公共群体大众的意见的集合[1]。
网络舆情监测系统则随着计算机科学及互联网的发展而普及开来,通过特定网络数据采集程序来获取网络平台的舆论情况,并将所获取的网络数据进行存储,以为之后的网络舆情数据分析来做好准备。
在数据分析环节对所获取的舆情数据进行内容分析或文本数据挖掘,以便获取舆论情况的相关特征。
伴随着对网络舆情监测方面的研究的进展逐渐加深,对于网络舆情方面的县官的研究也不断的发展。
网络舆情监测系统逐渐朝着大数据、实时性方面深入,以及人工智能和人工神经网络的发展,舆情监测系统对与舆论情况的把握越来越准确。
舆情监测系统所表现出来的对舆论监测以及动态把握的功能和作用有日益加强,甚至能通过对当前舆论情况的分析,而预测出未来一段时间内的舆论发展方向和趋势。
1.3国内外研究状况
国外对舆情及大数据研究主要在概念研究和技术研究上,其中重点在技术研究。
同时大部分的科学研究项目都集中在在对于大数据的影响及技术挑战上,相较于数据科学,其更重视的数据处理技术在工程实践中的应用,主要分析研究的时分析算法和处理方法。
同时因为一些相关的法律法规的约束,在舆情监测方面的成果和工程项目较少。
通过查询资料,我国对网络舆情研究及管理主要开始于本世纪初期,在对网络舆情的研究中,主要研究网络舆情的引导、控制、预警及对应急舆情情况的处理方面上。
在舆情引导方面主要是从媒体作用、职业道德和公众素养三个角度进行;在控制方式方面则加强法规制度、技术、专业人才的培养等方面与地面策应与网络处理相结合建立了立体化网络舆情监控机制。
对于预警机制则主要从
(1)及时掌握舆情动态,重视舆情监测采集系统的建设;
(2)注重参与引导网络舆论情况;(3)对于不良网络舆论情况制定建立合理的应对方式;(4)推进网络舆情分析处理的工作的效率。
[2]
1.4研究内容
基于Python的舆情监测系统,通过对所互联网社交数据进行研究和分析来研究社会的热点信息,通过对数据进行分析来寻找信息传播的影响力的规律,通过对网络舆情的判断,来快速把握对当前舆论环境、舆论趋势的把握。
通过对舆情的分析,来把握当前舆论情况中某些事物的关联性,为人们更好的做出决策而提供更好的判断指标。
除此之外,通过对文本的倾向性分析来挖掘判断出人们对某些事物的正面或负面的看法及评论。
通过统计人们所用高频词以及用词习惯来进一步更深层次的判断人们的情绪。
此外,对网络舆情监测系统结构和功能方面进行了设计和规划。
通过对系统整体的任务需求和功能组成进行分析,对整个系统的框架进行了设计,在数据采集算法方面采用了广度优先搜索策略来采集目标社交网络的信息,并对时间、舆论热度、消息内容信息采集以及数据存储等功能模块进行了相应的功能设计。
1.5预期结果和意义
通过Python编程语言编写出一个具有数据采集、数据处理以及数据可视化展示的舆情监测系统。
以XX贴吧为数据源,通过特定网络数据采集程序采集数据,并且存储到数据库中;在数据分析阶段通过文本信息挖掘,通过对所采集的数据进行分析处理,来从中提取出具有价值的信息。
最后在可视化展示模块,通过Flask搭建网络web平台框架,将有数据分析模块所提取的有价值的数据信息通过Echart、图表等方式进行可视化数据展示。
通过本次Demo来验证基于网络大数据的舆情监测系统的可行性,更直观的展示出大数据在舆情方面的效果。
同时也为以后的大规模舆情监测系统提供结构、技术性的参照。
同时在项目进行的过程中对程序的稳定性、运行速度以及其他方面进行了优化,可以应用在实际的工程需要之中,可以全天候24小时的进行网络舆情的监测与分析,具有相当的价值。
第2章相关技术介绍
2.1社交网络数据采集
网络数据的采集是通过网络数据采集程序模拟正常的浏览器访问来实现网络请求的程序。
可以类似的把互联网比作一张有这着各个节点相互连接的大网,而网络数据采集程序就相当于是在互联网网络上不断浏览爬行的爬虫,网页则是网上的节点。
每当爬虫程序到达一个网络节点的时候就可以类比相当于浏览访问了该网络页面,并且采集到了这个网络节点上所具有数据信息。
网络的数据的采集这是这样:
将每个节点与节点之间的连线等效的视为互联网网络之中的每个网页与网页之间的链接关系,这样,当爬虫每访问过这张网上的一个节点之后,便可以通过网页之间的链接来探测并通过该节点上与其他节点的通路,从而顺着以该节点的连线到达下一个相临的网络节点,即通过一个网页来获取此网页所相邻的之后网页,依次重复上述步骤并且将所有已经到达的网络节点标记,最终这样网上的所有节点都可以被爬虫全部遍历,从而获取网络上的数据。
2.1.1网络爬虫原理
爬虫首要任务就是获取网页,这里的网页并不是一般我们在浏览器中所看到的网页视图,而是指的是网页未经渲染的源代码。
网页源代码中包含着网页中的而大多数信息,所以只要可以获得网页的源代码,即可从中提取到所需信息。
图2.1网络爬虫工作流程结构图
在互联网上,一般的公开数据信息(各种网页)都是以http(或加密的http即https)网络协议进行传输的。
其主流的网络爬虫程序基本思路是:
通过具有特定关键字和规则的URL把所有相关的html页面全部获取下来,然后通过解析html文本,将所获得的数据信息收集起来,再存储到数据库中。
图2.1为本文所编写的网络爬虫工作流程结构图。
2.1.2爬虫的逻辑结构
一个最基本的网络爬虫程序的具体工作流程如下:
1)通过模拟HTTP的请求操作来向目标服务器发送一个类似与浏览器的请求(requests),目标服务器所返回的响应(respond)便是网页的源代码。
2)提取网页源码中的信息。
在获取网页页面之后,接下的任务便是通过一定的html规则来提取目标数据。
最常用的提取方法有:
正则表达式、BeautifulSoup、CSS选择器以及Xpath等。
3)保存数据。
在从网页源码中提取数据之后,将数据存储到数据库之中。
一般对于网页数据的特点可以采用非关系型数据库来增强数据的可调用星。
将数据存储到数据库中,以便为之后的数据分析工作做好准备。
2.1.3网络爬虫技术
(1)广度优先策略
图2.2广度优先策略
广度优先策略(BreadthFirstSearchStrategy,BFS)是根据目标对象层次目录的层次级数来进行搜索的策略,首先从当前目录的某一特定的网页开始寻找目录级数较少的网页,当处于同一层次级数的所有网页寻找完成之后,在向层次更高的目录进行搜索,直到所有层次遍历完成为止,广度优先策略可以确保能够搜寻到当前覆盖网络的所有节点,即能网页覆盖范围的广度大;此外使用广度优先策略算法也可以控制对目标搜索的层次深度,以防止当网络深度过深时造成程序进入死循环状态。
(2)正则表达式
正则表达式,又称规则表达式或正则集合。
通过直观简洁的正则表达式,便能够非常快速的实现一个复杂度高的项目业务逻辑需求,检索其目标文本之中的特定信息,并且正则表达式的具有非常优秀的时间复杂度O(n)。
[2]其工作原理是通过有限状态自动机(FSM)来实现匹配功能的。
(3)Ajax页面解析技术
Ajax,全称为AsynchronousJavaScriptandXML,是一种异步的JavaScript和XML网页刷新技术,是通过脚本语言JavaScript保证网页页面能够在不被整体刷新的同时保证网页链接地址无需更改或重新发送相关网络数据请求,而直接与目标服务器之间更新传递数据并渲染改变部分网页样式的动态刷新技术。
将传统更新页面的方式由页面全局刷新变为利用JavaScript改变网页从而局部刷新,以更新网页的方式。
Ajax工作过程分为以下几个阶段:
1).发送请求。
2).解析内容。
本地浏览器对服务器所返回的JSON数据内容进行解析。
3).渲染网页。
经过JavaScript来对已解析完成的数据内容和网页样式来进行HTML页面构造。
2.1.4非关系型数据库
非关系型数据库(NoSQL)是指无需遵守关系代数模式的数据库。
非关系型数据库是指在数据存储的过程中无需按照ACID特性存储数据。
非关系型数据库通常应用在高并发、数据存储提取量大的情况,同时非关系型数据库具有高拓展性和可用性的特征,为了解决对大量信息数据高并发进行读写速度方面的问题,而采用非关系型存储方式。
通常的非关系型数据库采用的数据模型有:
1)行列模式:
将存储的数据按照类似于Excel表格中的行列排列,以一行或一列作为一个数据记录。
常见的数据库有:
Hbase。
2)键值对模式:
存储的数据以键值对的形式存放在数据库中。
常见的数据库有:
Redis。
3)文档类模型:
以文档集合的形式来存储数据,与“键值对”模式较为类似,但数据结构中存在集合这一结构。
常见的有:
MongoDB。
2.2数据分析
数据分析是指通过使用适当的数据统计分析方法来对采集来的大量数据进行分析,剔除噪声数据并减少数据熵增,提取有价值信息和探寻结论从而对所获取的数据加以详细分析和概括总结研究的过程。
2.2.1词云介绍
词云是对网络数据中的文本信息进行数据分析的一种方法。
通过对数据文本进行分词处理,并对其中出现的频率次数大的关键词予以视觉方面的突出,形成“关键词图片”,从而过滤掉大量的低频的文本信息词汇,是得可以仅通过词云来反映文本的关键主旨。
由词语出现的频率来决定其在词云之中的位置、大小。
数据词云制作的过程大致可以分为一下几步:
1)明确词云主题和意义。
判断词云的主题以及所希望表达的内容,为之后的词云制作明确方向。
2)语料收集。
收集要进行分析的文本数据。
3)文本分词和关键字提取。
将文本数据中的词语提取出来,并统计不同词语的出现平吕。
2.2.2数据清洗
在正式的工程实践中,通过网络爬虫程序所获取的网页数据可能会包含一定的缺失值及噪声数据,此外也可能包含一定量的无效数据以及因为人工录入而导致的问题值,因此在数据分析的过程中首先就需要数据清洗。
数据清洗是指对数据进行审查校验的过程,其清洗的目的在于数据去重、纠正错误数据以及数据低熵化处理,从而确保数据的完整性与一致性。
数据清洗的流程大致如图2.3。
图2.3数据清洗流程
2.3数据可视化
可视化,就是将结构化的或者非结构化的数据转换成适当的可视化图表,以便将数据的特征可以直观地展现于人们面前。
数据可视化普遍应用于各种报表或者说明展示性的文件中,借助使用直观的数据图表表现出数据背后所蕴含的信息,显得简洁、直观。
数据可视化的表现形式的种类很多,其中各个可视化所侧重表达的重点各不相同。
除了传统的饼图、柱状图、折线图等常见图形,还有气泡图、面积图等视觉特效更好的图表。
2.3.1ECharts技术
ECharts,是一个由网页脚本语言JavaScript实现的可视化开源图形库,具有较强的兼容性和稳定性,可以流畅的运行在当今的绝大多数设备上,同时兼容当前多数网页浏览器,可以提供简洁直观、交互度丰富以及可以个性化制作的可视化图表。
除此之外,ECharts通过其内置的dataset数据属性可以支持直接读取使用包括二维表、元组以及key-value对等多种数据格式,此外通过设置encode属性(编码属性)就可以完成从数据到可视化图表的映射,化简了大部分应用场景下的数据转换的步骤,而且具有极强的兼容性,此外具有较强的拓展性,可以借助多组件生成复杂的图表类型。
对于大数据可视化方面,ECharts有其特定的从底层描述二进制数据的类似数组的数据格式,以使在渲染大数据量的数据图表时可以占用更少的内存,从而大幅度的提升可视化应用的性能和速度。
此外ECharts采用以数据驱动类型为其设计理念,图表可以随着数据的改变驱动图表展现的改变,无需在编码方面进行调整。
因此可以非常简单快捷的实现数据动态化,只需要获取数据,输入数据,便可以生成数据图表.
2.3.2Flask技术
Flask是一个基于Python的Web开发微框架。
借助Flask框架可以更简单高效的完成网络Web应用的软件框架。
Flask框架大致可以分为前端和后端两个部分。
Flask前端部分是通过Bootstrap框架与Jinjia模板语言来实现数据展示的,Flask中的app模块则负责后端功能,根据前端部分发送的数据请求,而从后端获取数据之后通过路由(route)映射到前端。
[3]
2.4本章小结
本章主要介绍了舆情监测系统中数据采集、数据分析以及数据可视化三大功能模块所使用的相关技术。
并对各个模块中的一些重要技术进行了介绍,主要有正则表达式、数据清洗以及Flask技术等。
第3章舆情监测系统设计
3.1系统的需求分析
网络舆情监测系统主要分为数据采集模块、数据分析以及可视化模块三个主要部分。
每个模块的功能需求也各不相同,其中以数据采集模块的功能要求最多。
下面是对各个功能模块的需求的具体分析:
(1)数据采集模块
数据采集模块的功能是从互联网上获取数据信息。
为了实现舆情监测的目的,数据采集将会对贴吧的数据进行采集。
采集的数据类型主要有两种:
1)贴吧首页各个发言贴的url、发帖人ID、发帖标题以及帖子留言数等信息进行采集。
2)通过发言贴的url对各发言贴内部的发言内容和留言内容、留言图片、留言人ID、留言时间以及留言设备型号进行采集。
在数据采集完成之后,将数据的格式转化为Json格式,同时存储到MongoDB数据库中。
(2)数据分析模块
数据分析模块的主要功能是对已经采集的数据进行校验审查以及数据分析,该模块的功能需求主要可以分为数据清洗和数据分析两部分。
数据清洗本分主要的需求就是通过清洗来实现数据去重、缺值补全以及剔除错误值。
数据分析则可以通过对数据消息文本进行分词、提取关键词来实现预料分析;通过时间等数据,来统计舆论热度。
此外,通过分析其他特定数据也可分析出其他信息。
(3)可视化模块
可视化模块的主要功能是将数据可视化,并且提供一个网络框架。
为实现数据可视化,通过调用ECharts将数据以图表的形式展示出来。
网络框架则通过Flask搭建一个供数据展示的Web网络,实现数据可视化以及前后端交互。
图3.1舆情监测系统结构图
3.2系统的框架设计
数据采集模块以广度搜索策略为设计思想,分别构造出贴吧爬虫和留言贴爬虫。
贴吧爬虫的主要任务是是获取目标贴吧中的所有发言贴的url、、发帖人ID、发帖标题以及帖子留言数。
留言贴爬虫的任务则是获取各发言贴内部的发言内容和留言内容、留言图片、留言人ID、留言时间以及留言设备型号进行采集。
图3.2数据采集模块框架设计
数据清洗模块则主要通过正则匹配比对来实现数据缺值查找以及剔除错误值。
并且在遍历数据的时候,及时调整数据编码方式,以防止可视化模块在数据展示是出现编码错误。
数据分析模块通过提取已收集的文本数据,从关键词、时间以及发帖频率等多个维度进行数据分析,并对分析数据进行格式化处理。
数据可视化模块通过EChart来实现数据的图表化,以便更直观的了解数据特征。
3.3爬虫模块设计
3.3.1贴吧爬虫设计
图3.3贴吧爬虫数据获取流程
贴吧爬虫程序的主要功能是通过遍历来实现对目标贴吧的全部发言贴的url进行获取。
图3.3为贴吧爬虫数据获取的流程图。
首先初始化爬虫程序,在链接信息数据库的同时,向目标贴吧服务器发送模拟浏览器的网页请求,当接收到服务器返回的网页源代码时,便完成了数据请求功能。
当网页源码数据接收在本地时,首先通过BS4将网页源码转化为格式化的剖析树,并对网页信息进行初步大略的定位并将其提取出来。
将提取的网络信息由html格式转化为单纯的字符串,之后通过re正则表达式实现目标信息的准确定位留言贴url。
当获取留言贴url之后,通过数据库中以存储的数据判断之前是否以及获取过该url,若当前url已经存在与数据库中,则舍弃当前url,重新进行网页请求;反之,则将其保存至数据库中。
当出现连续的url都已获取,则判断是否全部获取所有url,当全部url已经获取时,选择终止程序。
3.3.2留言贴爬虫设计
通过提取url数据库中的url来实现留言贴中留言信息的获取.其工作流程图如图3.4所示。
图3.4留言贴爬虫数据获取流程
首先初始化留言贴爬虫程序,同时链接url数据库提取数据库中储存的url,向目标贴吧服务器发送包含发言贴url的网页请求,接收服务器返回的网页源代码,从而完成了数据请求功能。
当网页源码数据接收在本地时,同样的首先使用BS4将网页源码转化为格式化的剖析树,并对网页信息进行初步大略的定位并将其提取出来。
将提取的网络信息由html格式转化为单纯的字符串,之后通过re正则表达式实现目标信息的准确定位留言内容、留言时间以及留言图片。
将获取的内容、时间以及图片转化为Json格式的数据,进而存储到分析内容数据库。
当获取一个页面的数据信息之后,通过判断是否获取全部页面信息来确定是否已经对该留言贴的全部内容进行了采集.如果采集完毕,则从url数据库中提取新的留言贴url进行数据采集.
3.4数据库设计
通过对系统的需求可知道数据库所
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 Python 舆情 监测 系统 设计