基于网络爬虫技术的网络新闻分析论文.docx
《基于网络爬虫技术的网络新闻分析论文.docx》由会员分享,可在线阅读,更多相关《基于网络爬虫技术的网络新闻分析论文.docx(40页珍藏版)》请在冰点文库上搜索。
基于网络爬虫技术的网络新闻分析论文
毕业设计(论文)任务书
第1页
毕业设计(论文)题目:
基于网络爬虫技术的网络新闻分析
毕业设计(论文)要求及原始数据(资料):
1.综述国内外网络爬虫技术研究现状;
2.深入了解网络爬虫与文字分析的相关技术;
3.熟练掌握网络爬虫爬取策略以及分析策略;
4.设计并实现针对网络新闻的爬虫程序;
5.深入分析与整合爬取到的网络新闻数据;
6.训练检索文献资料和利用文献资料的能力;
7.训练撰写技术文档与学位论文的能力。
第2页
毕业设计(论文)主要内容:
1.综述网络爬虫在大数据分析中的应用;
2.了解网络爬虫以及文字分析的相关技术;
3.熟悉网络爬虫的开发环境;
4.设计以网络新闻为目标的爬虫程序;
5.学习研究文字分析的关键技术与编写网络爬虫的设计流程;
6.熟练掌握程序绘制分析结果统计图的技术;
7.设计与实现针对网络新闻爬取与分析整合的程序。
学生应交出的设计文件(论文):
1.内容完整、层次清晰、叙述流畅、排版规范的毕业设计论文;
2.包括毕业设计论文、源程序等内容在内的毕业设计电子文档及其它相关材料。
第3页
主要参考文献(资料):
[1]于娟,刘强.主题网络爬虫研究综述[J].计算机工程与科学,2015,37(02):
231-237.
[2]张红云.基于页面分析的主题网络爬虫的研究[D].武汉理工大学,2010.
[3]张莹.面向动态页面的网络爬虫系统的设计与实现[D].南开大学,2012.
[4]张晓雷.面向Web挖掘的主题网络爬虫的研究与实现[D].西安电子科技大学,2012.
[5]奉国和,郑伟.国内中文自动分词技术研究综述[J].图书情报工作,2011,55
(2):
41-45.
[6]许智宏,张月梅,王一.一种改进的中文分词在主题搜索中的应用[J].郑州大学学报,2014(5):
44-48.
[7]欧振猛,余顺争.中文分词算法在搜索引擎应用中的研究[J].计算机工程与应用,2000,36(08):
80-82.
[8]Batsakis.S,PetrakisEGM,MiliosE.Improvingtheperformanceoffocusedwebcrawlers[J].Data&knowledgeengineering,2009,68(10):
1001-1013.
[9]Pant.G,MenczerF.MySpiders:
EvolveYourOwnIntelligentWebCrawlers[J].Autonomousagentsandmulti-agentsystems,2002,5
(2):
221-229.
[10]Ahmadi-AbkenariF,AliS.AClickstream-basedFocusedTrendParallelWebCrawler[J].InternationalJournalofComputerApplications,2010,9(5):
24-28.
基于网络爬虫技术的网络新闻分析
摘要
自从大数据的概念被提出后,互联网数据成为了越来越多的科研单位进行数据挖掘的对象。
网络新闻数据占据了互联网数据的半壁江山,相比传统媒体,其具有传播迅速、曝光时间短、含有网民舆论等相关特征,其蕴含的价值也愈来愈大。
利用相关网络爬虫技术与算法,实现网络媒体新闻数据自动化采集与结构化存储,并利用中文分词算法和中文相似度分析算法进行一些归纳整理,得出相关的新闻发展趋势,体现网络新闻数据的挖掘价值。
如果商业公司能选取其中与自身相关的新闻进行分析,则可以得到许多意想不到的收获,例如是否有幕后黑手故意抹黑、竞争对手情况如何。
第一时间掌握与其相关的网络新闻负面效应,动用公关力量,及时修正错误,平息负面新闻,这对当今的企业来说价值是巨大的。
关键词:
网络爬虫;网络新闻;数据挖掘
NetnewsAnalysisBasedOnWebSpiderTechnology
Abstract
Sincetheconceptofthebigdataisputforword,dataontheInternetbecamemoreandmorescientificresearchunitsfortheobjectofdatamining.NetnewsdataoccupieshalfofInternetdata,comparedwithtraditionalmedia,ithasspreadrapidly,shortexposuretimeandcontainstherelatedcharacteristicsofpublicopinion.
Therelatedwebspidertechnologyandalgorithm,torealizetheNetnewsautomaticdatacollectionandstructuredstorage,andsummarizessomefinishing,drawrelatednewsdevelopment,reflectthevalueofNetnewsdatamining,isthemainpurposeofthispaper.
Ifabusinesscanchoosenewswhichrelatedtotheirownandtodosomeprofessionalanalysis,theycangetmanyunexpectedgains,forexample,ifthereissomeonebehinddeliberatelysmear,oracompetitors.FirsttomasterrelevantnegativeeffectsofNetnews,theuseofpublicpower,timelyandcorrectmistakes,tocalmthenegativenews,whichisthevalueoftoday’senterpriseisenormous.
Keywords:
webspider;Netnews;datamining
运行截图:
1绪论
1.1论文研究背景与意义
时至2016年,互联网大爆炸催生出了一系列新生的网络产物,如微博、微信、网络新闻等,这些产物逐渐演化成了互联网时代的新兴媒体,以全新的方式承载了舆情与舆论。
网络新闻是由于某一时刻发生的新闻,首先被上传到互联网上,然后经过广大网民的评论转发而广泛传播,其中包含了很多的重要而且有价值的信息,例如网民们的评价倾向,人们对待某一事物的看法等等。
时至今日,互联网信息产业三足鼎立的局面显而易见,主要网络媒体新闻来源:
新浪微博、微信公众号、网络媒体。
其中,最开始显现这一势头的是新浪微博,例如“郭美美事件”,经由个人发博文,然后通过@一些网络推手或者微博大V,使得相关信息传播如星星之火,借助于微博的实时性,很快会形成燎原之势。
正是因为微博拥有这些特征,很多正面或者负面新闻不能通过传统媒体报道却能通过微博途径大肆传播。
随着新浪微博的发展与推广,越来越多的人喜欢将自己的生活“曝光”在微博上,例如心情状态、将来的计划、晒一晒生活、晒一晒人生等等,无形中,微博对舆论分析的潜在价值不断上升。
微博拉近了人们与新闻、与热点的距离,但是它也带来了不可忽视的负面影响。
针对微博谣言恶性化、舆论暴力不断、侵权案件层见叠出等问题,完全可以变废为宝,提早掌握此类信息,提早整改。
然而,近两年新浪微博对爬虫的预防愈来愈加严格,以微博api为首的一批爬虫已经跌倒,起因是新浪对相关微博SDK的api的封锁以及限制,故在本文中暂且抛弃了新浪微博这一网络新闻诞生地。
再者,就是微信公众号,俗话说“十年河东十年河西”,随着互联网传媒的进一步发展,更具有效率与价值的“新媒体”不断推出,在新浪微博如火如荼的情况下,微信公众号平台悄悄地来临了,其发展速度与推广力度甚至超过了新浪微博。
微信的公众号与朋友圈功能深受广大媒体与网民们的欢迎,所以说,又有“新媒体”诞生了。
横向对比微信公众号的效力,如果其微信订阅人数超过一万,那俨然就相当于一本杂志了;如果其微信订阅人数超过十万,那完全可以与地方性的报纸的影响力相媲美;但是一旦其微信订阅用户数量达到了百万级,其影响力绝对不会低于电视台,令人震惊。
如今,微信订阅用户数量(即粉丝数量)达到百万级的公众号比比皆是,由大粉丝量的公众号推送的文章影响力难以想象,而且速度迅疾,与传统媒体相比,简直秒杀传统传媒行业。
所以网络新闻的采集必然不可放过此领域,然而现实很残酷,微信公众号文章采集涉及跨平台,跨应用,以及相关权限token的获取,相对来说非常繁琐且自动化效率不高,故本文也放弃了此方式。
后者,也就是网络媒体了,各类门户网站借助自身的app可以迅速推送由各媒体记者收集到的一线新闻,比较热的网络媒体平台有:
凤凰网新闻、新浪新闻、搜狐新闻、网易新闻等,其专业程度要远胜于社交媒体,如微博、微信等,而且网络媒体信息的商用价值也要大于另外两家。
1.2论文研究内容
若要实时监测网络新闻的发展与变化,则必须使用相关工具,人工的速度太慢,这时候网络爬虫就应运而生了。
爬虫需要定时爬取相关网络媒体页面,获取页面源码并进行解析,取出正文部分。
这里面涉及到过滤算法,或者是网页结构的解析算法,同时还涉及到如何应对网站反爬虫策略,主要分为以下几个部分:
爬虫技术:
采用什么语言、什么框架来写爬虫,现阶段有什么样的流行的java爬虫框架?
如何从松散、非结构化的网络新闻中得到结构化的、紧凑的网络新闻数据。
网页处理技术:
如何处理js、面对ajax加载的网站该使用什么样的策略,以及如何从html语句中准确抽取出文章正文,同时还要提防网站的反爬虫技术,需要的时候爬虫请求头还可能需要带上cookie等等。
中文分词技术:
能够以相对较高的准确率将抽出出来的正文进行中午分词,以便后续使用分词来确定文章的相似性。
网络新词层出不穷,所以分词是否能准确识别未知的新词很是重要。
目前分词工具准备使用采用Lucene作为核心的IK分词、或者国产的Ansj中文分词等分词工具。
中文语料相似度匹配:
随着近几年的相关理论研究,已经推出了一些半成熟的解决方案,例如有计算余弦定理的方法、分析语义与词序的方法、计算编辑距离的方法。
首先介绍下编辑距离语料相似度计算的算法,具体是在给出任意两个汉字语句后,计算将这两个语句中任意一个汉字语句变换成另一个汉字语句的变换过程中所需要的最少的编辑次数。
最小编辑距离的算法是首先由俄国的科学家Levenshtein提出的,故又叫做LevenshteinDsitance。
当然,算法目前不能做到百分百相似匹配正确,这个问题的解决算是世界上的一大难题了。
相似新闻趋势展示:
采用jfreechart或者XX的echarts将分析结果以曲线图方式展示出来。
2系统需求分析
软件需求分析对软件系统提出了清楚、准确、全面而具体的要求,是对软件使用者意图不断进行揭示与准确判断的过程,它并不考虑系统的具体实现,而是严密地、完整地描述了软件系统应该做些什么的一种过程。
2.1系统需求概述
要求爬虫系统能完成对凤凰网新闻、网易新闻、新浪新闻、搜狐新闻等网站新闻数据的实时抓取,并正确抽取出正文,获取新闻的点击量,实现每日定时抓取。
能将抓取回来的新闻进行中文分词,利用中文分词结果来计算新闻相似度,将相似的新闻合并起来,同时也合并点击率,最后一点,能将相似因为一段事件内的用户点击趋势以合适的形式展现出来。
基于网络爬虫技术的网络新闻分析由以下几个模块构成:
网络爬虫模块。
中文分词模块。
中文相似度判定模块。
数据结构化存储模块。
数据可视化展示模块。
2.2系统需求分析
2.2.1系统功能要求
按照对系统需求调用的内容分析,系统功能划分为了一下五个模块:
数据采集模块:
数据采集模块负责数据采集,即热点网络新闻数据的定时采集,以及数据的初步拆分处理。
(1)中文分词模块:
中文分词模块能将数据采集模块采集到的热点网络新闻数据进行较为准确的中文分词。
(2)中文相似度判定模块:
中文相似度判定模块通过将数据采集模块采集到的热点网络新闻数据结合中文分词模块的分词结果,进行网络热点新闻的相似度分析,并能够将相似新闻进行数据合并。
(3)数据结构化存储模块:
数据结构化存储模块贯穿在其他模块之中,在数据采集模块中,负责存储采集拆分后的热点网络新闻数据;在中文分词模块中,负责从数据库读出需要分词处理的网络新闻数据;在中文相似度判定模块中,负责从将分析得到的相似新闻进行存储;在数据可视化展示模块中负责将相似热点新闻数据从数据库读出,其中涉及到大量关于数据库资源的处理。
(4)数据可视化展示模块:
数据可视化展示模块负责将中文相似度判定模块判定为相似新闻的数据以可视化的形式展示出来,展示形式可以自定义。
2.2.2系统IPO图
整个系统的IPO图如图2-1。
图2-1系统IPO图
爬虫输入新闻数据,然后处理分析,最后用可视化界面展示出来。
2.2系统非功能性需求分析
本系统设计的非功能性需求涵盖了一下几个方面:
性能需求:
要求爬虫能并行爬取网络新闻,并行分析,数据库的并发处理能力要足够强。
可靠性需求:
要求系统运行能保持稳定持久状态,没有明显的BUG
易用性需求:
要求爬虫系统能做到尽可能的自动化,争取不需要人为操作。
维护性需求:
要求系统出现BUG能比较容易的修复,系统的后期拓展功能较强。
3系统概要设计
系统概要设计的主要目的是能在此阶段将系统的主要功能逻辑设计和数据库系统的逻辑设计完全从需求分析中提取出来,在提取的过程中,不仅仅是奔着实现软件的功能而去,还得考虑上下文环境,例如系统最终的运行环境,系统以后可能增加的需求等等相关约束,在捋清楚系统约束之后在进行系统概要设计,这样软件系统之后的二次开发也不会太难。
3.1设计约束
3.1.1需求约束
系统能稳定运行在最低为JDK1.7的平台上。
数据库向后兼容,最低适配Mysql5.1。
要求程序有较好的跨平台性,可以同时运行在Linux、windows、Unix系统上。
要求数据库连接方面,设置的密码足够复杂,数据库连接管理良好,数据库系统能健壮运行。
禁止使用商业性软件,在本系统中使用的算法或是类库必须是免费的。
系统对系统配置的要求要尽可能低。
程序具有良好的可移植性、兼容性、安全性。
3.1.2设计策略
为了本系统能适应未来的需求与发展,特制定如下策略:
系统具有良好的接口扩展功能,能非常容易地扩展新功能,并将可能会经常调整的部分单独提取出来作为一个模块;
系统代码具有非常良好的复用价值,新功能的添加能基于现有功能进行派生;
系统代码优化到位,很少出现或者完全不会出现内存泄露的问题,包括数据库连接池的泄露,独享资源使用未关闭句柄的问题等;
当优化问题与代码健壮性发生冲突时,则以保证代码健壮性为首要目标,可以适当调整优化。
3.1.3技术实现
本系统设计与开发工具采用以下配置:
开发语言:
javaJDK版本1.7。
Java是一种具有非常棒的面向对象的设计思想的一门计算机语言语言。
Java技术具有很高的生产力,原因是大量的程序员为其贡献了大量的代码,目前Java程序广泛应用于Web、企业管理系统、云计算、大数据计算等方面,同时Java目前在全球的编程语言的稳居第一。
开发环境:
Eclipse。
Eclipse一开始是IBM旗下的一款开发工具,知道后来被IBM贡献给了开源社区,虽然开源,但是其功能一点也不逊于专业收费类型的开发IDE,Eclipse有着强大的开源活力,以及良好的扩展性,很容易在论坛上下载到各种各样为Eclipse量身定制的插件,所以开发本系统采用了Eclipse作为开发IDE。
3.3模块结构
3.3.1模块结构图
爬虫系统软件结构图:
向爬虫系统输入网页URL,爬虫打开网页解析处理抽出网页正文,然后输出网页正文,如图3-1所示。
图3-1爬虫子系统结构图
将网页正文传入系统,系统根据词库以及相关策略开始分词,最后将分词结果以数据形式(词组的形式)输出出来,如图3-2所示。
图3-2分词子系统结构图
首先第一步输入数据:
网络爬虫系统采集到的数据作为相似度匹配系统的输入,然后进入处理过程,处理过程采用了改进了的余弦定理进行处理,然后系统返回处理后的结果,最终本系统将处理后的结果作为输出,并传递给下一个子系统进行处理,如图3-3所示。
图3-3文章相似度匹配系统结构图
3.3.2系统层次图
本系统设计为分别由三个子系统组成,分别是:
网络爬虫系统即数据采集系统、新闻分析系统即中文语料相似度分析系统和最终结果展示系统,如图3-4所示。
图3-4系统层次图
3.3.3面向对象设计UML图
(1)在这里首先介绍一下系统中使用的数据库连接池,MF_DBCP自己写的一个数据库连接池,UML类图如图3-5所示。
图3-5系统类图
在DBCP连接池UML图中,定义了数据库异常抛出类,数据库配置的POJO类,数据库连接池核心类Pool以及代理实现了Connection的close()方法、setAutoCommit()等方法,还有数据库连接池监视器类,用来监视数据库的健康状况等等。
(2)爬虫核心是Web类,凤凰网新闻、搜狐新闻、网易新闻分别集成了核心Web类,然后各自实现各自的解析规则,核心Web类负责一些基础操作,例如打开网页,获取网页源码,还有一些正则表达式抽取分析算法,其实,Web类也包含了POJO类的作用,也是作为爬虫爬取新闻后生成的结果的载体,如图3-5所示。
图3-5爬虫系统类图
4系统详细设计
详细设计是在软件工程正式开始编码工作前的最后一个阶段。
在系统详细设计阶段,也就是本系统正式开始编码工作前,在此简单介绍下在编码过程中所用到的一些工具包,还有一些算法原理等等,同时还有本系统模块比较细粒度的介绍与设计分析以及其他在软件详细设计阶段需要做的一些工作。
4.1系统模块设计
系统结构逻辑上由四个部分组成:
第一个部分是数据采集模块,负责原生网页文档数据采集与正文抽取;第二个部分是采集数据固化模块,将数据采集模块采集回来的原始网页文档进行入库固化;第三个部分负责网页文档数据的处理与分析,从数据库读取原始网页文档数据之后进行中文分词,然后根据分词结果再进行相似度分析,并将分析结果为同一相似新闻的结果进行存储;第四层是数据展示模块,负责将分析整理后的数据以图表的形式绘制出来。
4.1.1数据采集模块
数据采集模块(爬虫系统)采集工具使用了HttpClient框架,配合正则表达式解析,抽取网页内容。
HttpClient是ApacheJakarateCommon下的一个子项目,开源而且免费,HttpClient起初的目的是为了做web测试用的,后来其功能不断完善,不断加强,在功能上基本上可以以假乱真真的浏览器,但它并不是一个浏览器,仅仅是实现了浏览器的部分功能。
HttpClient目前已经应用在很多的项目中,比如ApacheJakarta上很有名的另外两个开源的项目Cactus和HTMLUnit都使用了HttpClient。
HttpClient基于标准而且纯净的Java语言,实现了Http1.0和Http2.0,以可扩展的面向对象的机制实现了Http协议的全部方法(GET,POST,PUT,DELETE,HEAD,OPTIONS,TRACE),并且支持Https协议,通过Http代理建立起透明的连接,利用CONNECT方法通过Http代理隧道的Https连接,支持NTLM2Session,SNENPGO/Kerberos,Basic,Digest,NTLMv1,NTLMv2等认证方案,而且自带插件式的自定义认证方案。
HttpClient设计时候注重了可扩展性以及自定义性,所以HttpClient能支持各种各样的不同的配置方案。
同时在多线程的环境下HttpClient使用起来更加方便自如,HttpClient中定义了网页连接管理器,可以自动管理各种网页连接,能发现处于非正常的连接并关闭,起到了很好的防止内存泄漏的作用。
HttpClient能自动处理Set-Cookie中的Cookie,可以插件式的自定义Cookie策略,Request的输出流可以有效地从Socket服务器中直接读取相关的内容。
在Http1.0和Http1.1中利用Keep-Alive保持长久(持久)连接,可以直接获取服务器发送的responsecode和headers。
另外,HttpClient可以设置连接超时,实验性的支持Http1.1responsecahing。
使用HttpClientGetMethod来爬取一个URL对应的网页,需要如下步骤:
生成一个HttpClient对象并设置相应的参数。
生成一个GetMethod对象并设置相应的参数。
利用HttpClient生成的对象来执行GetMethod生成的Get方法。
处理返回的响应状态码。
如果响应正常,则处理Http响应内容。
释放连接。
获取了响应内容后需要解析HtmlDOM对象,这里选用了jsoup。
Jsoup是一款Java的Html文档解析器,可以直接解析某个URL地址,但是这里选用了HttpClient代替了他去获取HtmlDOM对象,因为jsoup自带的打开并解析URL的功能是一个比较基础的功能,远不如HttpClient提供的丰富,在这里,本文采用别的工具来替代Jsoup来获取HtmlDOM对象,比如上文介绍的HttpClient,获取了网页文档数据之后,可以把网页文档数据以字符串的形式传递给Jsoup来进行Html解析。
在Html文档的解析方面,Jsoup自带了很多非常非常方便的方法与API,例如:
可以像jQuery那样来直接操作HTML网页元素,此外还有其他提取HTML文档中需要的内容的方法,读者可以自行阅读Jsoup的官方使用文档。
最后一点,也是很重要的一点,使用Jsoup是完全免费的,包括对其进行代码上的复制与克隆,可以根据项目的不同需求来修改Jsoup的源码,作为一个相当受欢迎的Html文档解析器,Jsoup具有以下的优点:
Jsoup能直接解析网页URL从中取出需要的内容,也可以直接抽取Html文档字符串来进行解析工作;
Jsoup是实现了CSS的选择器,可以像jQuery那样直接操作元素;
Jsoup不仅能方便的处理Html文档正文内容,还能处理Html文档元素的相关元素,如获取Html标签的属性等功能;
除此之后,有一个很重要的特性,目前很多网站采用了不同的后台环境,有Java、PHP、Python、Node.js等作为开发工具,Web开发框架更是五花八门,所以很可能会出现一些纰漏,如网页标签缺乏闭合的部分,熟悉Html的人都知道,Html语言是一种容错性极高的语言,即使标签未能适时的闭合,浏览器也是能正常显示网页的,但是对于这些通过网站Html文档来获取网页信息的人来