网页信息抓取软件(此前,网页内容抓取软件MetaSeeker为什么没有使用正则表达式提取内容?)

优采云 发布时间: 2022-03-04 10:06

  网页信息抓取软件(此前,网页内容抓取软件MetaSeeker为什么没有使用正则表达式提取内容?)

  XSLT 已经编译了 20 年。比较难用的编程语言是Perl和XSL。XSL 很容易学习,但有很多陷阱。即使你想成为一名菜鸟程序员,你也必须了解它的原理。必须了解的几个 XSL 原理和使用技巧。之前,为什么网页内容抓取软件工具包 MetaSeeker 不使用正则表达式来提取内容?XSLT和正则表达式在网页数据提取和屏幕抓取(web scraping, screen scraping)领域的优缺点,有大量可复用的第三方程序库或软件模块进行集成,网页内容抓取制定的规则非常适用。然而,这些优势是有代价的。主要的代价是完全控制 XSLT 需要很长时间的学习和实践。下面总结了掌握 XSLT 的难点。XSLT 功能非常强大,大部分网页内容爬取和网页内容格式化和转换任务都可以通过一个 XSLT 指令文件完成。网页内容抓取软件工具包MetaSeeker自动生成的网页内容抓取规则是一个XSLT文件。在 XSLT 指令文件中,xsl:template 语句将许多指令组织成模块。模块化编程是降低编码成本的有效方法。但是,初学者很容易被 XSLT 的“模块化”所欺骗。大多数网页内容爬取和网页内容格式化和转换任务都可以通过一个XSLT指令文件来完成。网页内容抓取软件工具包MetaSeeker自动生成的网页内容抓取规则是一个XSLT文件。在 XSLT 指令文件中,xsl:template 语句将许多指令组织成模块。模块化编程是降低编码成本的有效方法。但是,初学者很容易被 XSLT 的“模块化”所欺骗。大多数网页内容爬取和网页内容格式化和转换任务都可以通过一个XSLT指令文件来完成。网页内容抓取软件工具包MetaSeeker自动生成的网页内容抓取规则是一个XSLT文件。在 XSLT 指令文件中,xsl:template 语句将许多指令组织成模块。模块化编程是降低编码成本的有效方法。但是,初学者很容易被 XSLT 的“模块化”所欺骗。

  其实XSLT处理引擎采取了一种很诡异的方式,你可以想象成这样:有一台机器,两个feed素材分别是XSLT指令和转换后的文档(我们关心的是HTML页面),一个成品用于导出,产品是转换后的文档(即提取的数据),机器不断旋转。这种机器的特点是任何原料进入后按顺序进行加工。例如,如果您觉得目标 HTML 文档需要在一遍之后再次处理,则不可能在同一个处理会话中获取更多信息。是的,就像磁带机一样,数据是按顺序访问的,两者是一样的。这是使用 XSLT 的最大障碍。很容易出错。错误的现象是能抓到的数据没有抓到。如果你脑子里总是有这台机器,你就可以避免这个错误。如果要抓取的数据是表结构的话,上面的问题就不容易暴露出来,XSLT指令文件也可以很简单,但是大部分网页内容都是复杂的树形结构,比如B2B 网站 对于上面的产品分类,大类下有子类,多级嵌套。这是一个树形结构。执行深度嵌套操作需要 XSLT 指令。使用下一节中介绍的几个“模块化”指令非常容易。很好地处理了这个问题,但是上一节中解释的顺序处理器打破了“模块化” 并且实际上在某种程度上变成了伪模块化。手动编写XSLT容易出错,编码-验证-修改循环多次重复。Web抓取异构数据对象搜索软件工具包MetaSeeker应运而生。MetaSeeker中的MetaStudio工具的原理很简单,就是生成一个XSLT指令框架,这是一个框架时代。我们有开发框架(比如Spring框架),网站(cms)框架(比如Drupal),MetaStudio生成XSLT指令框架,按照顺序处理器的原理生成. 屏蔽烦人的顺序处理器的 XSLT 指令框架,用户看到的是真正的模块化。手动编写XSLT容易出错,编码-验证-修改循环多次重复。Web抓取异构数据对象搜索软件工具包MetaSeeker应运而生。MetaSeeker中的MetaStudio工具的原理很简单,就是生成一个XSLT指令框架,这是一个框架时代。我们有开发框架(比如Spring框架),网站(cms)框架(比如Drupal),MetaStudio生成XSLT指令框架,按照顺序处理器的原理生成. 屏蔽烦人的顺序处理器的 XSLT 指令框架,用户看到的是真正的模块化。手动编写XSLT容易出错,编码-验证-修改循环多次重复。Web抓取异构数据对象搜索软件工具包MetaSeeker应运而生。MetaSeeker中的MetaStudio工具的原理很简单,就是生成一个XSLT指令框架,这是一个框架时代。我们有开发框架(比如Spring框架),网站(cms)框架(比如Drupal),MetaStudio生成XSLT指令框架,按照顺序处理器的原理生成. 屏蔽烦人的顺序处理器的 XSLT 指令框架,用户看到的是真正的模块化。Web抓取异构数据对象搜索软件工具包MetaSeeker应运而生。MetaSeeker中的MetaStudio工具的原理很简单,就是生成一个XSLT指令框架,这是一个框架时代。我们有开发框架(比如Spring框架),网站(cms)框架(比如Drupal),MetaStudio生成XSLT指令框架,按照顺序处理器的原理生成. 屏蔽烦人的顺序处理器的 XSLT 指令框架,用户看到的是真正的模块化。Web抓取异构数据对象搜索软件工具包MetaSeeker应运而生。MetaSeeker中的MetaStudio工具的原理很简单,就是生成一个XSLT指令框架,这是一个框架时代。我们有开发框架(比如Spring框架),网站(cms)框架(比如Drupal),MetaStudio生成XSLT指令框架,按照顺序处理器的原理生成. 屏蔽烦人的顺序处理器的 XSLT 指令框架,用户看到的是真正的模块化。我们有开发框架(比如Spring框架),网站(cms)框架(比如Drupal),MetaStudio生成XSLT指令框架,按照顺序处理器的原理生成. 屏蔽烦人的顺序处理器的 XSLT 指令框架,用户看到的是真正的模块化。我们有开发框架(比如Spring框架),网站(cms)框架(比如Drupal),MetaStudio生成XSLT指令框架,按照顺序处理器的原理生成. 屏蔽烦人的顺序处理器的 XSLT 指令框架,用户看到的是真正的模块化。

  使用FreeFormat提高爬取网站页面提取网页内容数据的准确率详细讲解了帧生成原理,MetaStudio使用FreeFormat技术保证生成的XSLT文件帧以正确的顺序执行,并使用目标页面中的语义标记(例如,微格式和 CSS 选择器),以提高信息提取的准确性;和How to use XSLT to extract a piece of content on a HTML page but not some content 本段展示了如何将手写的XPath表达式和XSLT指令文件片段集成到MetaStudio中间生成的框架中。XSLT XSL 指令集中有几个模块化指令:xsl:template, xsl:for-each xsl:apply-templates, xsl:call-template, plus xsl:if, 您可以使用它编写易于阅读的 XSLT 文件。但是,作为初学者,一定要牢记顺序机,否则很容易被这些模块化指令误导。如果你看看网上关于 XSLT 的讨论,你会发现很多菜鸟都在向老手求助,有的老手甚至建议要避开哪些雷区,例如:xsl:for-each vs. xsl:apply-templates 老手说:不要使用 xsl:for-each,使用 xsl:apply-templates。

  在一定程度上确实如此,但在某些情况下需要使用for-each,例如结合xsl:if,首先判断是否存在节点集,然后再使用xsl:for-each代替xsl:应用模板,因为您不希望 XSL 引擎匹配自己。在这种情况下,请记住以下两个要点。XPath XPath 我们常说XSLT 离不开XPath。XPath 必须在上一节解释的模块化指令中使用,例如匹配规则、测试规则和选择规则等。你会发现很多 XPath 并不出色,例如:./p/text(),无法出现在 xsl:template 中,这个 XPath 不是另一个 XPath?如果你脑海中有顺序处理器的形象,这并不难理解。处理 xsl:apply-templates 时,引擎需要在当前节点之后找到匹配的节点或节点集。这 ”。” 运算符是多余的,只能是 p/text()。此原则适用于所有匹配操作。但是,它在 xsl:for-each 中有所不同。它是一条选择规则,可以选择当前(.)节点,或者follow-sibling或preceding-sibling等,也可以应用所有的选择规则。

  (上下文节点) (当前节点) 我们在上一节已经提到过当前节点。还有一个概念叫做上下文节点。顺序处理器是一个烦人的设计。有时我们必须回去,但实际上我们不能回去。但是我们可以先暂停机器,停机后在事先没有加工过的原料中搜索再搜索,实际上达到了折返的效果。这是上下文节点和当前节点的作用。由于篇幅所限,我不再赘述。如果您有兴趣,可以阅读 XSL 规范和书籍。另一个要记住的概念是:节点集,这需要你解剖机器,看看原材料的加工过程。如果你有兴趣做你自己的研究。

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线