赵光亮 令狐雨薇 朱德孙 赵顺艳 杨陶 陈凤
摘要:该文主要探讨BBS类论坛网页的文本数据的爬取与分析。首先,对该类论坛网页的HTML结构进行研究分析。在该类在论坛类网页中,文本数据主要包含链接页面中的全部主贴、全部回帖。其次,结合正则表达式、网络文本挖掘、Python工具、HTML等工具构建该类型论坛网页文本数据的抓取算法。为了便于用户阅读文本,还需要构建整理、清洗网页文本数据的算法,将抓取的网页文本数据整理为主题和回帖对应的json终极数据格局。
关键词:通用网络爬虫; BBS;正则表达式;Python语言
中图分类号:TP3 文献标识码:A 文章编号:1009-3044(2018)24-0259-02
1 背景及意义
当今是大数据时代,大数据又包含无穷大的信息,而互联网中的网页数据是半结构化存在的,对我们真正有用的消息被很多广告、图标、链接等噪音元素遮蔽。怎么将有效的信息从网页数据中爬取出来并整理为适合用户阅读的最终“产品”,是当前整个大数据行业的重点问题之一。由于网页通常采取超等文本标记语言(HTML)来表达,所以提取网页有关的信息,应先获取 BBS类型网址,利用 Python语言对于任意 BBS类型的网页,获取其 HTML结构内容,再运用正则表达式匹配,构建一个算法用于提取该页面全部主贴、所有回帖,并按Json格局开始存储。
2 分析方法
2.1 正则表达式
本文提及的网络爬虫算法主要是利用正则表达式模糊匹配所需的网页信息,正则表达式的主要是模糊匹配文字的最佳工具。它具有很强的灵活性、逻辑性和功能性,可以通过简单快捷的方式对字符串实行复杂的控制。正则表达式的应用:本文对要提取出来的BBS网页上的源代码使用正则表达式来抓获用户所需要的有效网页文本内容。
2.2 Python语言
Python首先是一款免费开源软件,其次它席卷了其他编程语言的解释性、编译性、互动性和面向对象。它自带 urllib、urllib2、 re等爬虫最基本的爬虫库,网络爬虫是基于 Python语言开发的开源爬虫软件,用 Eclipse软件中加载Pydev插件实现网络平台搭建,通过对正则表达式和 Python语言的学习,在 eclipse中编写代码实现任意类型 BBS类型网页的信息提取。
3 挖掘过程
3.1 流程分析
论坛正文提取概括为以下几个步骤:
结合已给样本数据锁定论文网页的网址
对数据进行预处理
結合正则表达式判断现阶段的网页内容是否为论坛所要提取的正文数据
基于正则表达式,对网页信息需求进行匹配
进行匹配模型的确定
对预期结果进行分析,给出最优解决方案的模型
3.2 数据分析
1)HTML文档结构与解析
HTML是一种标准的标记语言,是由WEB的发明者Berners-Lee创立的,主要用来创建Web页面。浏览器可以通过读取HTML文件然后将其渲染到浏览器界面中供用户浏览使用。HTML文档是纯文本文档的一种,它形象地描摹了对象文档的各个细胞在浏览器中的显示特性,比如显示对象文档某个细胞的位置、颜色、字体等信息。
2)BBS网页结构分析
对 BBS的 URL进行分析,发现 BBS网页 URL中包含了重要的结构信息,页面上的不同元素如标题、作者、发帖时间、发帖内容、回帖内容等出现特定的标记符之间,借此实现了 Python语言爬取网页信息挖掘的方向。
3)基于DOM树的HTML文档解析
HTML DOM 即HTML 的标准对象模型、HTML 的标准编程接口、W3C 标准。它界定了全数 HTML 细胞的工具和属性,以及会见它们的方式。总的来说,HTML DOM 是获取、修改、添加或删除 HTML 元素的一个标准。做出有价值的信息,能帮助并指导企业决策、政府决策等工作。
3.3 数据预处理
BBS类网页文本榨取主要从网页自身的标签语言结构,以及网页中的分块视觉特征的角度出发。一般情况下,文本数据都位于标签的[ table]节点内,因此去除页面“噪声”,对每一个[ table]节点进行处理后,就可以得到不含任何标签内容的纯文本字符串。
通过对 BBS类网页的 HTML文档结构进行研究,构建了从网页源代码中抽取所有主贴、所有回帖相关的信息的算法,最后能有效地抓获我们的目标信息。用正则达式的匹配功能,我们能够快速地实现URL 的抽取。网络爬虫以种子网页为“源”,提取种子网页中的有用链接并将其放入一个有序的候补爬行队列中,按照用户希望的规则从队列中提取URL。为了避免重复访问同一个链接,我们将以访问过的URL备份到已访问URL队列。
为了使得抓取的数据有效,将对整体数据进行非正常剔除。(例如:Web网页打不开,指定的主题不存在等。整体数据进行非正常剔除。(例如:网页打不开,指定的主题不存在或已被删除或正在被审核,请返回)。
3.4 挖掘建模
联网比喻为一张蜘蛛网, Crawler就像敏捷的蜘蛛一样在这张网上扫荡,不断地侦探互联网上对用户有用的文本信息。为了快速准确获取,联网比喻为一张蜘蛛网, Crawler就像蜘蛛一样在这张网上游走,不断地搜索互联网上的有用信息。为了快速准确获取舆情信息,提出以下提取方式,方案如下:
(1)获取任意BBS类型的URL
(2)针对任意BBS类型网页,正文提取需要的数据项主要有主贴(正文、时间及作者)、回帖(正文、时间及作者)。本文在通过网页正文提取技术的基础上,实现了对网页正文更好的提取,利用html标签对正文、时间及作者进行分析。
(3)如果要对BBS类论坛网页进行抓取,那么需要先对该类网页进行聚类处理。
(4)然后对用户需要的取数据项信息进行爬取,对于有发表作者、主题、发表内容和发表时间的网页,本文采用正则表BBS类论坛网络爬虫实现循环获取网页的原理是通过不断地冲击网页内文本包含的超链接地址来获取更多的网页,算法模型如下:
获取任意BBS类型的URL
针对任意类型BBS网页,利用HTML标签树对正文、时间及作者进行分析
在BBS论坛类网页进行抽取之前,需要先对爬行的网页进行聚类
用正则表达式对网页的抽取数据项有发表作者、内容、主题和发表时间
3.5 分析结果
针对挖掘模型,经过数据处理后结果如下:
标题信息
{標题信息:"从这条新闻中你得到了什么教训? - 笑话大全 - 搞笑村"}
题主信息
{题主信息: "临风有点冷"}
题主发帖内容
{“题主发帖内容”:[{“在网上看个新闻,大概内容是”:”老公买了一只藏獒幼仔,没时间养,一直是老婆在养”},{“一次老公老婆吵架,老公把老婆打了,结果藏獒冲出来果断把老公手咬断了!”},{“打老婆时要把狗栓好!” }]}
回帖信息
{“回帖信息”:"分数高如果认购二哥让他退给我"}
回帖作者
{“回帖作者”:"豪杰先锋涛涛"}
回帖时间:
{“回帖时间”:"2016-9-4 09:57:16"}
3.6 算法评价
本文的算法是固定的对于某类的 BBS类类型的BBS类论坛网页,对于任意类型的BBS类论坛网页的信息提取还没有达到。算法使用的匹配原则不能实时更新,对于不断更新的网页源代码,本文所使用的算法可能会不适用。
4 结语
针对 BBS论坛网页的主贴与回帖的提取,本文使用的是正则表达式来对网页源代码进行所需信息的匹配与提取,为了更准确地使用正则表达式,在之前了解了网页源代码的结构,根据所需要的内容所在的标签进行了多网页的分析。使用相似度最大的一种正则表达式的表示方法对网页源代码进行匹配标记。本文对网页文本数据的提取是具有一定的局限性,主要针对 BBS论坛中的信息正则表达式,协同网络爬虫技术,使得数据分析员能够快速从互联网中获取海量的网页数据,对抓获的数据进行系统的整理和分析,从中提取出对互联网数据用户有价值的信息,并指导该用户做出决策等。
参考文献:
[1] 李媛.舆情系统中web信息抽取子系统的设计与实现[D].电子科技大学,2013.
[2] 余浩.基于网络信息检索的网页文本抽取和处理的研究[D].南京邮电大学,2014.
[3] 刘佐达,张久岭,陈茂科,等.一种面向BBS信息检索的主题网络爬虫算法[J].郑州大学学报(理学版),2010(6).
【通联编辑:代影】