网页内容抓取工具包MetaSeeker为什么没有使用正则表达式提取内容

优采云 发布时间: 2021-05-21 20:28

  网页内容抓取工具包MetaSeeker为什么没有使用正则表达式提取内容

  XSLT编程已有20年了。感觉更难使用的编程语言是Perl和XSL。 XSL易于学习,但是有很多陷阱可供使用。即使您想成为新手程序员,也必须了解其原理。以下重点介绍一些必须理解的XSL原理和使用技巧。以前,为什么Web内容爬网软件工具包MetaSeeker不使用正则表达式提取内容? XSLT和正则表达式应用程序在Web数据提取和屏幕抓取(Web抓取,屏幕抓取)领域的优缺点突出了使用前者的优点。毫无疑问,使用前者进行编程的成本要低得多。 ,有大量可重复使用的第三方库或软件模块用于集成,并且制定的Web内容爬网规则非常适用。但是,这些优点是以一定的价格获得的。主要价格是:全面控制XSLT需要很长时间的学习和实践。以下总结了掌握XSLT的困难。 XSLT非常强大。大多数Web内容捕获以及Web内容格式化和转换任务都可以通过XSLT命令文件完成。网页内容爬网软件工具包MetaSeeker自动生成的网页内容爬网规则是XSLT文件。在XSLT指令文件中,xsl:template语句将许多指令组织到模块中。模块化编程是降低编码成本的有效方法。但是,XSLT的“模块化”很容易欺骗初学者。

  实际上,XSLT处理引擎使用一种非常奇怪的方式。您可以想象一下:有一台机器,两个原材料是XSLT指令和转换后的文档(我们关注HTML网页),一个成品被导出,该产品是转换后的文档(即提取的数据) ),机器会不断旋转。这种机器有一个特点。任何原料进入后都将按顺序进行处理。例如,如果您认为目标HTML文档在处理后需要再次处理,则不可能在同一处理会话中获取更多信息。是的,就像磁带驱动器一样,数据是按顺序访问的。两种材料都是这种情况。这是使用XSLT的最大障碍。容易犯错误。错误现象是未捕获可以捕获的数据。如果您始终有这台机器,可以避免此错误。如果需要捕获的数据是表结构,则上述问题不容易暴露,并且XSLT命令文件也可以非常简单,但是绝大多数Web内容都是复杂的树结构,例如, B2B 网站商品分类。主要类别和多级嵌套下有子类别。这是一个树状结构。 XSLT指令是执行深度嵌套操作所必需的。最好使用下一节中介绍的几个“模块化”指令。但是,为了解决这个问题,在上一节中说明的顺序处理器破坏了“模块化”,实际上在某种程度上变成了伪模块化。手工编写XSLT容易出错。编码-验证-修改周期很多次,并且用于Web爬行异构数据对象的MetaSeeker软件工具箱应运而生。 MetaSeeker中的MetaStudio工具的原理非常简单。它是用来生成XSLT指令框架的。这是框架时代。我们有开发框架(例如,Spring框架),网站(cms)框架(例如,Drupal),并且MetaStudio生成XSLT指令框架,该框架符合顺序处理器的原理以生成XSLT指令框架。 ,屏蔽了烦人的序列处理器,用户可以看到真正的模块化。

  使用FreeFormat提高从抓取的网站页面提取Web内容数据的准确性,详细说明了帧生成的原理。 MetaStudio使用FreeFormat技术来确保生成的XSLT文件框架可以以正确的顺序执行,并在目标页面中使用语义标记(例如Microformat和CSS选择器)来提高信息提取的准确性;以及如何使用XSLT提取HTML页面上的内容段落,但是该段落中的某些内容并未显示如何将手写的XPath表达式和XSLT指令文件片段集成到MetaStudio生成的Frame中。 XSLT XSL指令集中有几个模块化指令:xsl:template,xsl:for-each xsl:apply-templates,xsl:call-template以及xsl:if,您可以使用它们来编写易于编写的XSLT文件读 。但是,作为初学者,您必须牢记顺序机器,否则很容易被这些模块化指令所误导。只需看一下Internet上有关XSLT的讨论,您就会发现许多菜鸟都向老鸟求助,甚至有些老鸟也只是建议新手应该避开哪个雷区,例如:xsl:for-each vs. xsl :apply-templates老鸟说:不要使用xsl:for-each,请使用xsl:apply-templates。

  在某种程度上,这是正确的。但是,在某些环境中,必须使用for-each。例如,与xsl:if结合使用,首先确定是否存在节点集,然后使用xsl:for-each和不需要xsl:apply-templates,因为您不希望XSL引擎独立匹配。在这种情况下,您必须牢记以下两个要点。 XPath XPath我们经常说XSLT与XPath是分不开的。在上一节中说明的模块化指令中使用了XPath。例如,匹配规则,测试规则和选择规则等。您会发现许多XPath并不明亮,例如:./p/text(),不能出现在xsl:template中,这个XPath不是那个XPath吗?如果您脑海中有一个顺序处理器的图像,这并不难理解。在处理xsl:apply-templates时,引擎必须在当前节点后面找到匹配的节点或节点集。这 ”。”操作员是多余的。它只能是p / text()。此原则适用于所有匹配操作。但是,在xsl:for-each中,它是不同的。这是一个选择规则。您可以选择当前(。)节点,也可以选择后继同级或先前同级等,也适用于所有选择规则。

  (上下文节点)(当前节点)在上一节中,我们已经提到了当前节点。还有一个称为上下文节点的概念。顺序处理器是一个烦人的设计。有时你不得不回头。实际上,您不能。 ,我们可以先暂停该机器,然后在停止后搜索并搜索尚未事先处理的原材料。实际上,我们已经取得了回头路的效果。这是上下文节点和当前节点的功能。由于篇幅所限,我不再赘述。如果您有兴趣,可以阅读XSL规范和书籍。要记住的另一个概念是:节点集。这是看一看这台机器,看看原材料的加工过程。如果您有兴趣,请自己研究。

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线