一种BBS页面自动采集方法
技术领域
本发明涉及一种互联网计算机BBS处理技术领域,特别是一种BBS页面自动采集方法。
背景技术
随着科技的进步,互联网信息进入一个爆炸式、多元式的时代,互联网成为一个巨大的信息库,互联网信息采集可以使您在信息采集、资源整合、资金利用、人力投入等方面节约大量资源,广泛应用于行业门户网站信息采集、竞争对手情报数据搜集、网站内容系统建设、垂直搜索、舆情监测、科研等领域。
常规的BBS(电子公告牌系统(Bulletin Board System)通过计算机上运行服务软件,允许用户终端通过网络连接,上传下载数据,与其他用户交流信息等功能)页面内容采集程序工作时,依赖于人工提供每个不同BBS站点的页面解析模板,格式定义文件中定义了BBS帖子中所有有效数据项的XPath,如帖子标题、正文、作者、发表时间,以及回复者、回复内容、回复时间等等。
维护BBS站点页面解析模板是非常枯燥的,而且采集程序覆盖的站点越多,工作量越大。若BBS站点改版后,原有的页面解析模板文件也就随之‘过期’,需要重新订制,但是往往很难及时发现并重新订制,导致一旦某个BBS站点改版,那么在发现之前,这些BBS站点的数据都将异常甚至丢失。
总之现有的BBS站点因为格式多样化,数据量爆炸式膨胀,监控严格等,导致收集难度加大,主要表现在:
1、需要人工配置BBS页面解析模板,制定对应信息的XPath。
2、网站的海量信息抓取,规则难以统一制定。一般会针对每个站点单独配置解析模板,工作量大;
3、后继带来了海量的规则维护工作,以及站点改版后规则要实时更新的问题;
4、若不能够及时发现BBS站点改版,那么采集这些BBS站点的数据将会出现异常。
以上技术缺陷对于大型的采集系统这些问题尤为突出,急需通过新的技术方法来取代人工的维护工作。
发明内容
发明目的:本发明所要解决的技术问题是针对现有技术的不足,提供一种BBS页面自动采集方法。
为了解决上述技术问题,本发明公开了一种BBS页面自动采集方法,包括以下步骤:
步骤1,采集获取BBS页面所有元素信息;
步骤2,交叉对比系统库中节点元素;
步骤3,若节点名称相同,比较节点数量;
步骤4,确定节点名称和节点数量都相同之后,交叉对比的两个节点标识为当前楼层节点;
步骤5,记录楼层节点的XPath(XML路径语言,用来确定XML文档中某部分位置),完成帖子楼层的分割,楼层内容的XPath提取,实现通用信息采集。
本发明中,步骤1包括互联网访问目标BBS帖子页面,并获取页面字节流,将字节流解析成jdom对象,jdom中包含所有Element对应的html标签,且拥有html标签的所有属性和值。
本发明中,步骤2~步骤4包括:
遍历jdom对象的所有Element:
若Element A 的子节点数量大于1,交叉比较Element A的所有子节点,即所有的子节点与其他所有兄弟节点依次比较;当比较的子节点a和子节点b的节点名称相同,且所拥有的属性值相同,则进一步比较子节点a和子节点b的结构;
若子节点a的子节点结构与子节点b的子节点结构相同,即拥有相同名称、属性和数量的子节点,则认为子节点a和子节点b结构相同;
若子节点a包含的<A>节点(HTML中<A>标签节点用于定义超链接,用于从一个页面链接到另一个页面,其最重要的属性是href,它指示链接的目标)数量少于子节点a包含的文本类型节点数量,则认为子节点a节点为楼层节点;
若Element A 的子节点数量为0或1,则认为该节点下的直接子节点不需要划分楼层。
本发明中,步骤5包括:
记录楼层节点的XPath,完成帖子楼层的分割;
确定楼层中的有效数据节点,并记录XPath位置;
楼层结构为左右结构,左边节点包含楼层作者信息,右边节点包含发表内容、发表时间;作者信息对应作者节点,即楼层结构左边节点;作者节点为<a>节点,herf属性值为作者信息页面的URL,节点值为作者名称;发表时间出现在楼层节点中的任何地方,提取方式为按照日期格式进行匹配;发表内容位于楼层节点右边,存在于两个以上html文本标签中,需要将对应的html文本标签内容追加提取;
保存该BBS站点的贴子规则,将分析过程中记录的有效数据XPath生成页面解析模板,供采集使用;
采集程序执行时,检查要采集的BBS站点是否存在页面解析模板,如果存在且模板没有过期,那么直接使用页面解析模板采集;如果发现没有模板或模板已经过期,那么就通过上述步骤自动解析生成页面解析模板。
本发明中:
JDOM:一种是用XML的独特java工具包,包含java语言的语法乃至语义,实现XML文件解析。
Element:XML文档中的元素,可以包含属性,其他元素含有文本。
HTML:超文本标记语言,构成网页文档的主要语言,可以包含文字、图形、动画、声音、表格、链接等。
HTML:超文本标记语言,构成网页文档的主要语言,可以包含文字、图形、动画、声音、表格、链接等。
有益效果:本发明通过自动解析html结构能够处理绝大部分的BBS站点,有效的提高了采集开发效率,优化了采集系统结构,简化采集处理流程,为大规模采集系统提供了新的高效解决方案。
附图说明
下面结合附图和具体实施方式对本发明做更进一步的具体说明,本发明的上述和/或其他方面的优点将会变得更加清楚。
图1为本发明流程图。
具体实施方式
本发明公开了一种BBS页面自动采集方法,包括以下步骤:步骤1,采集获取BBS页面所有元素信息;步骤2,交叉对比系统库中节点元素;步骤3,若节点名称相同,比较节点数量;步骤4,确定节点名称和节点数量都相同之后,交叉对比的两个节点标识为当前楼层节点;步骤5,记录楼层节点的XPath(XML路径语言,用来确定XML文档中某部分位置),完成帖子楼层的分割,楼层内容的XPath提取,实现通用信息采集。
具体而言,本发明包括以下步骤:
(1)互联网访问目标BBS帖子页面,并获取页面字节流。
(2)将字节流解析成jdom对象,jdom中包含所有Element对应的html标签,且拥有html标签的所有属性和值。
(3)遍历jdom对象的所有Element。
(3-1)若Element A 的子节点数量大于1
交叉比较A的所有子节点,即所有的子节点与其他所有兄弟节点依次比较。
当比较的两个子节点 a 和 b 的节点名称相同,且所拥有的属性值相同,则进一步比较a和b的结构;
若a的子节点结构与b的子节点结构相同,即拥有相同名称、属性和数量的子节点,则认为节点a和b结构相同;
若a包含的<A>节点数量少于a包含的文本类型节点数量,则认为a节点为楼层节点。
(3-2)若Element A 的子节点数量为0或1,则认为该节点下的直接子节点不需要划分楼层。
(4)记录楼层节点的XPath,完成帖子楼层的分割;
(5)确定楼层中的有效数据节点,并记录XPath位置;
说明:楼层结构一般为左右结构,左边节点包含楼层作者信息;右边节点包含内容、发表时间。
作者节点特征:楼层结构左边节点;作者节点为<a>节点,herf属性值为作者信息页面的URL,节点值为作者名称;
发表时间:发表时间可能出现在楼层节点中的任何地方,但是提取方式只需要按照日期格式进行匹配;
发表内容:位于楼层节点右边,可能存在于多个html文本标签中,需要将对应的html文本标签内容追加提取。
(6)该站点的帖子规则保存:将分析过程中记录的有效数据XPath生成页面解析模板,供采集程序使用。
(7)采集程序执行时,可以检查要采集的站点是否存在页面解析模板,如果存在且模板没有过期,那么可以直接使用页面解析模板采集;如果发现没有模板或模板已经过期,那么就通过01-06自动解析生成页面解析模板。
本发明提供了一种BBS页面自动采集方法,具体实现该技术方案的方法和途径很多,以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。本实施例中未明确的各组成部分均可用现有技术加以实现。