编辑FreeFormat整理箱结构

整理箱结构树上有一个右键弹出菜单,上面的菜单项都是用来修改整理箱结构的,如果整理箱是使用newBckt按钮创建的,大量的操作都是“添加”信息属性;如果整理箱是通过FreeFormat识别创建的,主要的修改操作是修剪整理箱结构树。

所有可以进行的裁剪和编辑操作都是从整理箱结构树的右键弹出菜单上激发。首先在结构树上选择要操作的FreeFormat节点,然后点击鼠标右键选择相应菜单进行操作。

技巧:整理箱结构树、DOM树视窗和内嵌的浏览器上的信息是一一对应的,选择某个信息属性时,如果它是一个FreeFormat节点(即具有FreeFormat标志),那么,在DOM树视窗上,相应的DOM节点将被选择,同时,在浏览器上的相应内容将用一个闪烁的红色边框突出显示,便于用户观察。

下面将讲解几个常用的操作,其他操作参见《MetaStudio V3.x高级用户手册》



添加信息属性

在整理箱结构树的鼠标右键弹出菜单中有个“添加”菜单项,下一级菜单有三项:

  • 其前:在当前被选信息属性前面添加一个新的信息属性,与当前信息属性是兄弟关系
  • 其后:在当前被选信息属性后面添加一个新的信息属性,与当前信息属性是兄弟关系
  • 包容:为当前被选信息属性添加一个子信息属性,如果当前信息属性节点本来就是容器节点,新加的信息属性放在第一位置;否则,当前信息属性变成容器节点。

激发上述任一菜单后,将弹出一个对话框,需要编辑以下特性(attribute):

  • 信息属性:信息属性的名字,推荐使用反映真实语义的字符串,可以使用的字符必须符合XML标签命名规范,例如,英语单词或中文词汇等,可以用空格间隔,但是在生成指令文件时空格由下划线代替(开发提取结果处理程序时要注意这点),因为该名字在提取结果文件中用XML标签表示,空格必须被替代成合法字符。
  • key:表示该信息属性是否是关键字,其含义跟数据库关键字不同,表示该信息属性是否一定要出现在目标页面上,如果设置了key特性,则本信息属性的提取规则将作为其中一条信息结构识别规则,表示这个信息属性必须存在于页面上,否则,该页面不符合信息结构识别规则,即该页面信息不被提取。因此,在定义信息提取规则时,适当选择一些信息作为页面识别的标志,可以加强信息提取指令文件的适应性,即使目标页面结构作了些许调整,以前生成的信息提取规则并没有失效。

    技巧:

    • 如果设定了某个信息属性的key特性,它的所有的嵌套的上级容器节点的key特性会自动设定。
    • 如果取消某个信息属性的key特性,将弹出一个对话框,询问是否要取消它的所有的嵌套的上级容器节点的key特性。
    • 如果要取消某个信息属性的key特性,将检查它的父容器节点的key特性,如果也设定了key特性,则不允许取消。

  • clue:是否在该信息属性上生成一个新的线索,如果选择,在Clue Editor工作台上自动增加一条信息提取线索。
  • url:如果信息属性具有clue特性,自动拥有url特性,表示该信息属性将作为URL进行处理,如果地址信息中只有路径名和页面名,提取结果处理程序应该补足协议名和域名,生成完整路径的URL地址。注意这个工作DataScraper没有做,需要在用户开发的提取结果处理程序中做。可以从数据结构指令文件(GEM)中获得该类型值。注意:在GEM文件中该类型值是link
  • block:是否从目标页面上整块提取信息,如果是,对话框将显示block的选项,例如提取一个DIV下的所有IMG元素或文本内容或者整个HTML文档片段等,详细使用方法参见MetaStudio高级用户手册

    注意:如果整理箱是通过FreeFormat识别创建的,每个叶子节点的block特性都设置成提取文本内容,在很多情况下,可能会将一些无用的文本内容提取下来,这样必须取消block特性,而是采用数据映射操作精确指定被提取的信息。

整理箱结构树的节点字段表明映射的DOM树节点序号,刚创建信息属性时这项没有赋值(取值-1),需要执行映射操作赋值。



删除信息属性

一般情况下,如果整理箱是通过FreeFormat识别操作创建的,结构树中的很多与本主题语义没有关系的节点需要删除,例如,承接FreeFormat识别一节的例子,FreeFormat识别操作完成后,box1子容器是没有价值的,选择删除菜单,会询问删除整棵子树还是仅仅删除容器节点,如果是后一情形,该子容器下的节点都平移到被删除子容器节点的父节点下。



重命名信息属性

FreeFormat识别时,使用识别到的HTML class或者id特性的值命名信息属性,一般需要将名字改成符合语义的字符串,另外需要注意,在同一个整理箱中不允许重名的信息属性存在,这也是修改信息属性名字的一个主要原因,在很多情况下,会有很多重复的class和id特性值,需要一一修改对应的信息属性的名字。

在FreeFormat整理箱结构树顶部是信息属性编辑区,可以在信息属性名编辑框中直接修改其名字。也可以在整理箱结构树上双击某信息属性,在弹出窗口中修改信息属性名。



选择FreeFormat标志

当前版本,只有HTML class和id特性能够作为FreeFormat标志,如果一个节点既有id特性又有class特性,缺省情况下优选id特性,在整理箱结构树中有个字段类型表示选择了哪个标志,有如下情形:

  • +id-class:表示既有id又有class特性,选择了id
  • -id+class:表示既有id又有class特性,选择了class
  • +class:表示只有class,并选择了它
  • -class:表示只有class,但没有选择它
  • +id:表示只有id,并选择了它
  • -id:表示只有id,但没有选择它
  • 没有:表示没有FreeFormat标志

注意:因为id特性一般是唯一的(有时页面有错误,也会有重复的id),所以,如果被提取的信息本来就是唯一的,则可以使用它,相反,则不能使用它,例如,在本样本页面上有很多公司信息,其中的某段信息可能使用id标志,为了使信息提取规则适合本页面上所有公司信息块以及适合所有页面上的公司信息块,id特性一般是要慎重使用的。

针对FreeFormat标志的操作有:

  • 清除FreeFormat:从整理箱结构树的右键菜单激发,如果某个FreeFormat标志不合用,可以完全放弃采用FreeFormat技术,而是采用普通的数据映射方法指定信息提取位置。
  • FreeFormat影射:从DOM树视窗上的右键菜单激发,选择某个拥有id或者class特性的节点后,将其影射到整理箱结构树中的某个节点上,将在下章详述。
  • 选择FreeFormat标志:在整理箱结构树上的某个节点上双击鼠标左键,在弹出的编辑窗口中可以选择FreeFormat标志,如果不选择任何标志,其效果跟清除操作相同。