发明内容
本发明的目的在于提出一种成本低、效率高的网络数据采集方法。
本发明利用同类网站存在共同结构特性的特点,总结规划的通用的模板模型,在降低了人工操作成本的同时,高效的实现了多路信息的同时采集。
本发明是一种基于HTML流处理的数据采集方法。该方法的实施系统由多线程收集器和下载控制模板以及数据存储系统构成。
如上所述,网络数据采集的主要问题就是在保证效率的前提下如何降低人工投入成本进行更加细致的信息采集。本发明利用模板继承的方式处理HTML的数据流来解决这个问题。其步骤包括:通过HTTP协议获取HTML文档数据流,然后利用一些节点来处理传入的数据流,这些节点以树的形式来表示,执行步骤为从树的根节点出发,按深度扩展的顺序往下进行处理,对于同一层的节点按其先后顺序处理;对每一个节点都设置有一定的属性,这些属性的设置是处理和编辑的核心部分;每个节点都传入当前数据流(Stream)和需要进行存储的数据信息,这些信息都不会因为通过其子节点返回之后而改变,控制模板节点的细则如表1所示。
这些节点分为有返回值和无返回值两类,无返回值的节点包括:
Pattern节点,为父节点,所有的其他节点都可以作为它的子节点。它本身并不包含任何属性,其他的所有节点都由它派生而来。
Filter节点,可以把所有的其它节点作为它的子节点,截取上一层数据流中的一部分字符串,作为其子节点的传入数据流,它截取以Head开头,以Tail结尾的字符串,按照Type中的节点截取一段。
Group节点,可以把所有的其它节点作为它的子节点。它将数据流根据分段标签分段,对于分出的每一段数据流给其子节点的节点处理。
Store节点,其子节点只能是有返回值的节点,保存继承得到的以及在其子节点返回的数据流,并将其中的内容保存起来。
Open节点,其子节点只能是有返回值的节点,它打开Url/Intercept节点中截取得到的Url,Open节点可以选择要打开的Url,需要使用的控制模板也可以选择是否将这个Url保存起来。
Replace节点,可以把所有的其它节点作为它的子节点,用来替换一些特定的字符串。
Repeat节点,可以把所有的其它节点作为它的子节点,它用来重复执行一定次数的其子节点,次数可以指定也可以截取,当指定的次数小于0时,将选用截取的次数。
有返回值的节点的返回值都包括name和value,所得的节点将被父亲节点进行处理。有返回值的节点包括:
Intercept节点,这个节点是存储数据的的主要节点,它不包含子节点,作用是截取上一层数据流中的一部分字符串,截取部分与Filter节点的作用相同,不同的是这个节点将截取的数据流返回给父节点。
Count节点,不包含子节点,得到输入数据流种特定的字符串的个数。
Merge节点,子节点只能是有返回值的节点,用来合并这些节点。
图1是本系统的运行流程图,本系统主要由以下几个部分组成:下载任务列表,线程池,下载器,下载控制模板,解析器以及文件存储系统。
首先,从任务队列中获得一个下载任务,如果任务列表为空,则系统运行结束,否则将任务传输到下载线程池;如果线程池有空闲线程则执行任务,否则任务仍在任务列表中等待,直到线程池有空闲线程为止,线程数量可以根据运行的具体环境在配置文件中控制。
如果执行任务成功,则将下载的HTTP数据流输入到解析器,解析器由与任务配套的下载控制模板来控制;如果执行任务失败,则将任务返回到下载任务列表中;成功解析的结构化数据被存储到文件系统之中。如果是最后一个任务,则系统运行完结。
对于每一个网站,可以根据需要来配置这个网站需要的模板,这与其他方法所说的配置模板有所不同,本发明配置模板的目的不仅是为了指示系统的运行路径,更主要的是自由的选取需要进行存储的网络信息。由于定义了表1所示的模板类型,因此在实用中进行操作是十分便利的。
有益效果:
本发明采用下载控制模板的方式,解决了网络数据采集过程中精准度和效率的结合问题,可以用于各种网络信息的自动采集。具有下述优点。
1.模板的设计具有通用性和易读性,可以涵盖所有的数据采集要求。
2.模板的通用性,使模板配置工作简单,模板易读性增强,便于维护。
3.利用数学方法来检验冗余操作,多线程技术分配下载任务,使系统具有非常高的工作效率。
4.允许使用人灵活的配置模板,使本系统具有非常广阔的实用价值。
5.采集范围和类型十分广泛,几乎不受限制。
6.有网络的计算机就可以运行,运行成本低廉。