DataScraper用户手册
DataScraper是什么
DataScraper是信息提取工具包GooSeeker中的一个工具,是Web页面信息抓取工具,利用MetaStudio生成的指令文件,对指定页面的信息进行连续抓取,并将信息存储在DataStore服务器上。
DataScraper同普通的网络爬虫不同,怎样爬行网络、提取什么信息、怎样存储结果等是在指令文件指导下进行的。
指令文件分成两类:
●工作流指令文件:指导DataScraper怎样爬行网络,例如,是否持续爬行、是否提
取信息等。当前此类文件需要手工编写,下文详细讲解。
●信息提取指令文件:指导DataScraper怎样提取信息和线索等。此类文件由
MetaStudio生成,在《MetaStudio简明操作手册》中讲解。
DataScraper界面介绍
整个界面分成四个区:
●菜单条:位于顶端。
●主题列表区:位于左上栏,用于浏览或者查询主题。
●浏览器窗口区:位于右上栏,用于显示当前正在提取的页面。
●信息输出区:位于下栏,用于显示信息提取中遇到的问题。
DataScraper基本操作方法
提取Web页面信息的基本步骤是:
1.使用MetaStudio定义目标页面的信息提取规则,生成指令文件。在《MetaStudio
简明操作手册》中说明。
2.编写工作流指令文件。在下一章讲解。
3.浏览和查询主题。
在主题列表区点鼠标右键菜单“List”可以列出所有主题,也可以在列表下方的输入窗口中输入要查询的主题名(支持通配符*),回车后查询匹配的主题。
4.对选定的主题进行信息提取。
在主题列表区点鼠标右键菜单“Crawl”,填写需要连续爬行的线索数量,提交后,系统将开始网络爬行和信息提取。
注意:请预先估计一下爬行一个线索需要的时间,然后输入合适的连续爬行线索数。经测试观察,DataScraper可能有轻微的内存泄露,如果处理器性能较差,经过24小时
运行,内存泄露能够被察觉;如果处理器性能较高,例如双核酷睿,内存泄露不易察觉。
内存泄露原因暂时无法确定,关闭DataScraper和Firefox浏览器后内存释放。
建议:持续网络爬行不要超过24小时。
DataScraper工作原理
DataScraper的核心是个工作流引擎,顺序调度工作流指令文件中定义的处理器。系统还提供一个全局的上下文容器,供处理器交换数据或者获得控制指令。
每个处理器的框架是一样的,对外接口有:
●从上下文容器获得其他处理器或者系统产生的数据。
●向上下文容器输出数据供其他处理器使用。
●从上下文容器中获得系统和其他处理器发出的控制指令,例如,是否停止整个工作
流、是否跳过本处理器等等。一个最重要的控制指令是令牌,令牌决定了工作流中处理器的调度。每个处理器被调度时要检查令牌,判断自己应该怎样运行,在向下一处理器传递令牌时可以修改令牌的内容。
如果需要开发DataScraper工作流处理器,请参照《GooSeeker技术手册》和《DataScraper程序员手册》。
DataScraper工作流处理器介绍
本版本可以使用的工作流处理器有下述几个:
名称使用说明
MigrateWorksBucket如果在一个主题的信息提取过程中产生inthread线索,该处理器能够将上一次线索爬行
期间产生的上下文信息转移到后续的inthread线索爬行期,使工作流能够循环运行。主
要用于被提取的信息用多个页显示,DataScraper需要翻页。
FetchSpiderClue首先尝试从上下文容器中获取inthread线索,如果没有获得,将从DataStore服务器上
获取状态是start的新线索。
LoadHtmlPage加载线索指向的Web页面
FindDataSchema_Plain利用MetaStudio生成的页面筛选指令文件(DSD文件)检验目标页面是否可提取。如果不是,当前线索的状态将改成unknownschema。
ExtractWebNodeData_Simp利用MetaStudio生成的信息提取文件(MAP文件)从目标页面上提取信息,并将提取到
的信息转换成XML文件,存储在上下文容器中。
ExtractWebNodeData_Trans在ExtractWebNodeData_Simp的基础上,利用MetaStudio生成的信息转换文件(GEM文
件)进一步转换信息格式,以适合数据库存储。如果被提取的信息属性具有block特性,
只能使用ExtractWebNodeData_Simp处理器,因为提取到的信息不适合存储在二维表格
中。
ValidateExtraction利用MetaStudio生成的页面筛选指令文件(DSD文件)检验提取到的信息是否正确,如果不
是,当前线索的状态将改成unknownschema。
SaveFile_Simp将信息提取结果文件从上下文容器中取出来发送到DataStore服务器上
ExtractSpiderClue_Simp利用MetaStudio生成的线索提取文件(SCE文件)从目标页面上提取线索并发送到
DataStore服务器上。如果提取的线索的主题拥有新主题名,则到MetaCamp服务器上申
请使用该名。
ConfirmSpiderClue_Simp在DataStore服务器上,将当前线索的状态改成extracted。
CleanWorksBucket清理上下文容器,如果当前线索提取到了inthread线索,本处理器将妥善保存该信息,
以便启动inthread循环。
DataScraper工作流指令文件实例
工作流指令文件存储在Tomcat的work目录下,位置是:
${CATALINA_HOME}/work/DataStore/context/spider/config/[主题名]/
手工制作工作流文件时,需要手工创建以主题名命名的子目录,用于存放指令文件。指令文件名必须具有如下格式
[主题名].profile.xml
指令文件是个XML文件,内容如下:
上面是一个完整的指令文件,这个指令文件说明要进行下面的活动:
●支持inthread循环,在信息提取时能够进行翻页操作
●从目标页面上提取信息
●从目标页面上提取线索
有些主题不必进行所有的活动,如下面的例子所示:
例1:仅在当前页面提取线索(没有i n t h read循环)
例2:仅提取信息(有i n t h read循环)
DataScraper结果文件
结果文件是以XML格式存放的,以方便对结果的处理,例如,使用XSLT程序将结果文件转换成HTML文件等。
结果文件存储在Tomcat的work目录下,位置是:
${CATALINA_HOME}/work/DataStore/works/uploadfiles/config/[主题名]/
文件名字采用下面的格式:
[主题名]_[线索id]_[时间]
下面是结果文件的结构说明:
<整理箱名字>
<信息属性1>信息属性1的值信息属性1>
<信息属性n>信息属性n的值信息属性n>
<信息属性1>信息属性1的值信息属性1>
<信息属性n>信息属性n的值信息属性n>
......
整理箱名字>