用户登录  |  傲看软件园 用户注册
文章中心广告代码ASP源码PHP源码JSP源码.NET源码源码相关傲看留言板繁體中文
当前位置:傲看软件园文章中心技巧应用网络通讯

使用XSLT抓取网站内容抽取网页数据的技巧

减小字体 增大字体 作者:Fuller  来源:本站原创  发布时间:2009-09-02 19:38:04

网站内容抓取和网页数据抽取几乎是每一个网站建设者都要使用的技术,网站的网页都是HTML或者XHTML文档,数据抽取/信息提取方法分成两类:

1,通过正则表达式提取内容,(X)HTML文件就是一个文本文件,直接使用正则表达式在指定地方提取内容即可,"指定地方"不一定是绝对定位,例如,可以参照HTML的标签定位,更准确

2,利用DOM、XML、XPath、XSLT提取内容,(X)HTML文件先转成DOM数据结构,再使用XPath遍历这个结构提取内容或者使用XSLT成片地抽取数据。

HTML文件本身是一个有结构的文件,文档中的文本内容用众多标签(tag, HTML element)括起来,这些标签形成了HTML文档的结构,在浏览器上显示时,首先将这个有结构的文本文件转换成DOM数据结构,期间还要进行一些必要 的纠错,例如,有些HTML文件中的标签没有闭合,只有开始标签,没有结尾标签,需要在产生DOM结构之前将这些错误进行修正。因此,如果单纯使用正则表 达式的方法,这些结构化信息没有很好的被利用,相反第二种数据抽取方法充分利用了这些结构信息,而且可以采用模块化的编程方法,大大提高编程效率和减少程 序的bug,例如,使用XSLT的xsl:template,编写模块话的数据格式转换和提取。但是,XSL语言也是比较复杂的,本文仅仅讲解一个 XSLT使用技巧:将HTML页面中的某个片段的内容提取出来,但是过滤掉某些不需要的块。形象地说,就是将一个页面的某一大块剪下来,但是,将其中的一 些小块挖掉。

使用xsl:copy-of可以将HTML的一个片段整个拷贝下来,但是,如果要将这个片段中的某些内容挖掉,需要一些技巧。可以使用xsl:copy, xsl:copy只提取当前节点,而xsl:copy-of提取当前节点及其子节点并递归调用。用xsl:copy能够定制一个类似xsl:copy- of的递归调用的过程,并且在递归调用过程中可以任意控制筛选哪些节点。

即将发布的网页抓取/数据抽取/信息提取软件工具包MetaSeeker最新版本将提取规则定义方法扩展到3种:
1,完全由软件自动生成;
2,用户可以使用XPath表达式指定特定信息属性的定位规则;
3,用户可以定义自己的XSLT提取片段。

要实现上述需求,需要使用第三种方法,定义一个xsl:template,例如,如下template

<xsl:template name="description">
<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(自由职业者招标和外包项目)网站上提取任务描述信息,只提取节点(node),例如,HTML元素和文本,不提取节点属性 (attribute),例如,@class等,需要过滤掉的节点用空template实现,后面四个就是其这种作用

将定义好的上述template片段放在网页抓取/数据抽取/信息提取软件工具包MetaSeeker中的MetaStudio工具bucket edit工作台的输入框中保存,即可由系统自动嵌入到自动生成的信息提取指令文件中。

Tags:网络通讯

作者:Fuller

文章评论评论内容只代表网友观点,与本站立场无关!

   评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论

精品栏目导航

关于本站 | 网站帮助 | 广告合作 | 下载声明 | 友情连接 | 网站地图
冀ICP备08004437号 | 客服Q:354766721 | 交流群83228313
傲看软件园 - 绿色软件,破解软件下载站! 源码网 源码之家 绿软之家
Copyright © 2003-2010 OkHan.Net. All Rights Reserved .
页面执行时间:26,640.63000 毫秒
Powered by:OkHan CMS Version 4.0.0 SP2