使用xsl:copy-of可以将HTML的一个片段整个拷贝下来,但是,如果要将这个片段中的某些内容挖掉,怎样实现?网页抓取/数据抽取/信息提取软件工具包MetaSeeker的提取规则是自动计算得出的,能实现这种需求吗?
主题名是car_forum_topic_keluzi_autohome,提取汽车论坛的帖子,有些跟贴引用楼上某帖,也就是对楼上某帖的回答,下例不想将引用部分提取出来。引用部分都位于一个class='quote'的DOM节点下,将该节点下的所有内容过滤掉。
<xsl:template name="content"> <xsl:apply-templates select="node()" mode="copy-content"/> </xsl:template> <xsl:template match="node()" mode="copy-content"> <xsl:value-of select="."/> <xsl:apply-templates select="node()" mode="copy-content"/> </xsl:template> <xsl:template match="*[@class='quote']" mode="copy-content"/>
可以使用xsl:copy,xsl:copy只提取当前节点,而xsl:copy-of提取当前节点及其子节点并递归调用。用xsl:copy能够定制一个类似xsl:copy-of的递归调用的过程,并且在递归调用过程中可以任意控制筛选哪些节点。
网页抓取/数据抽取/信息提取软件工具包MetaSeeker最新版本将提取规则定义方法扩展到3种:
要实现上述需求,需要使用第三种方法,定义一个xsl:template,例如,如下template
用于从一个freelancer project网站上提取项目描述信息,只提取节点,例如,HTML元素和文本,不提取节点属性(attribute),例如,@class等,需要过滤掉的节点用空template实现,后面四个就是其这种作用
将定义好的上述template片段放在网页抓取/数据抽取/信息提取软件工具包MetaSeeker中的MetaStudio工具的bucket editor工作台的输入框中保存,即可由系统自动嵌入到自动生成的信息提取指令文件中。
递归提取文本并滤除某些节点
主题名是car_forum_topic_keluzi_autohome,提取汽车论坛的帖子,有些跟贴引用楼上某帖,也就是对楼上某帖的回答,下例不想将引用部分提取出来。引用部分都位于一个class='quote'的DOM节点下,将该节点下的所有内容过滤掉。
MetaSeeker工具包有很强的适应力
可以使用xsl:copy,xsl:copy只提取当前节点,而xsl:copy-of提取当前节点及其子节点并递归调用。用xsl:copy能够定制一个类似xsl:copy-of的递归调用的过程,并且在递归调用过程中可以任意控制筛选哪些节点。
网页抓取/数据抽取/信息提取软件工具包MetaSeeker最新版本将提取规则定义方法扩展到3种:
要实现上述需求,需要使用第三种方法,定义一个xsl:template,例如,如下template
<xsl:copy>
<xsl:apply-templates select="node()" mode="copy-description"/>
</xsl:copy>
</xsl:template>
<xsl:template match="node()" mode="copy-description">
<xsl:copy>
<xsl:apply-templates select="node()" mode="copy-description"/>
</xsl:copy>
</xsl:template>
<xsl:template match="*[@id='projectTechnicalSummary']" mode="copy-description"/>
<xsl:template match="*[@class='horizontalLine']" mode="copy-description"/>
<xsl:template match="*[contains(./a//text(), 'Report Violation')]" mode="copy-description"/>
<xsl:template match="img" mode="copy-description"/>
<xsl:template match="a" mode="copy-description"/>
用于从一个freelancer project网站上提取项目描述信息,只提取节点,例如,HTML元素和文本,不提取节点属性(attribute),例如,@class等,需要过滤掉的节点用空template实现,后面四个就是其这种作用
将定义好的上述template片段放在网页抓取/数据抽取/信息提取软件工具包MetaSeeker中的MetaStudio工具的bucket editor工作台的输入框中保存,即可由系统自动嵌入到自动生成的信息提取指令文件中。