数据结构指令文件,也称为GEM文件,该文件是对信息提取(网页抓取/抽取)结果的数据结构的描述。该文件存储在DataStore服务器的目录$CATALINE/work/DataStore/context/extraction/config/<主题名>/中,文件名后缀是.gem.xml。文件结构解释如下:
<?xml version="1.0" encoding="UTF-8"?>
<geometa-extraction-mapping> <!-- 本文件的根元素 -->
<theme>testTheme</theme> <!-- 主题名 -->
<transform> <!-- 如果目标页面的信息先转换成一个中间文档,该段说明转换规则 -->
<template>testTheme.default.gem.xslt <!-- 数据提取指令文件名 -->
<context>//*[@id='blueFrame']</context> <!-- 如果目标信息位于FRAME/IFRAME中 -->
<context>//*[@id='rightFrame']</context> <!-- 该信息表示嵌套的FRAME/IFRAME -->
</template>
<output>transDOM_xxx</output> <!-- 如果发生转换,该信息表示中间文档的名字 -->
</transform>
<bean name="objectName"> <!-- 映射到的对象名字,即整理箱名 -->
<property name="txt" type="string"> <!-- 映射到的信息属性 -->
<from> <!-- 该属性由什么映射而来 -->
<type>DOM</type> <!-- DOM表示从DOM映射而来 -->
<location>transDOM_xxx</location> <!-- 表示映射源在哪。transDOM表示中间DOM -->
<path>//txt/text()</path> <!-- 用XPath表示的提取位置 -->
</from>
</property>
<property name="header" type="string"> <!-- 另一个信息属性 -->
<from>
<type>DOM</type>
<location>transDOM_xxx</location>
<path>//header/text()</path>
</from>
</property>
</bean>
</geometa-extraction-mapping>
其中
- 信息属性映射源的类别
- DOM:表示信息属性值从一个DOM结构中提取获得(本例使用)
- XML:表示信息属性值从一个XML文件中提取获得
- 信息属性映射源的存放位置
- transDOM_xxx:表示信息属性是从使用数据提取指令文件转换成的DOM中提取获得
- 文件路径:表示信息属性是从一个操作系统文件中提取获得
- URL:表示信息属性是从一个在线资源上提取获得
- transDOM_xxx中的xxx表示XSLT文件的排号
- transform元素有多个,每个与上述序号对应。
- 每个属性有三种类型:
- string: 表示该属性是字符串
- block: 表示该属性是一个HTML片段,虽然在结果文件中也是字符串。
- link: 表示该属性代表一个URL地址,在开发程序处理提取结果时可以利用这个类型值,将完整的地址恢复出来。在当前的DataScraper中无法恢复,因为DataScraper使用XSLT提取数据时没有做这个操作。