`
zhymin77
  • 浏览: 18309 次
  • 性别: Icon_minigender_1
  • 来自: 郑州
社区版块
存档分类

htmlcleaner爬取页面报contains未定义

阅读更多
htmlcleaner用xpath中查找node,若xpath调用contains函数会报:“org.htmlcleaner.XPatherException: Unknown function contains”。

  htmlcleaner构建的Rootnode不能直接调用contains函数需要进行如下转换:

lazy val htmlCleaner = new HtmlCleaner
lazy val ISSNXPath = "//div[@class='bdy4']//b[contains(text(), '国际刊号')]"
  def extract(path: String) = {
    val root = htmlCleaner.clean(new File(path))
    val doc = new DomSerializer(new CleanerProperties).createDOM(root)
    val xpath = javax.xml.xpath.XPathFactory.newInstance.newXPath
    val value = xpath.evaluate(ISSNXPath, doc, javax.xml.xpath.XPathConstants.NODE)
    println(value)
    val next = value.asInstanceOf[org.w3c.dom.Node].getNextSibling
    println(next.getTextContent)
  }
如上scala code所示:将htmlCleaner创建的根节点转为标准w3c节点,构建标准w3c XPath,进行查询即可。

对非Node后text类型文本的获取,可通过getNextSibling获得。
来自:http://www.imilo.cn/findblog/28
分享到:
评论

相关推荐

    Confluence 管理未定义的页面 - CWIKIOSSEZ

    ### Confluence管理未定义页面详解 #### 一、概述 Confluence是一款强大的团队协作与文档管理系统,被广泛应用于企业内部的知识共享与项目管理之中。在使用Confluence的过程中,经常会遇到“未定义页面”的情况,...

    完美解决IE9浏览器出现的对象未定义问题

    由于跨域安全限制,父页面与子页面之间可能存在通信障碍,导致在子页面中引用父页面的变量或对象时出现“对象未定义”的错误。在这种情况下,需要检查iframe的src属性,确保它们指向正确的URL,并且遵守同源策略。 ...

    Promise 未定义 引用脚本

    IE11也支持html2canvas该插件 Promise 未定义 引用该脚本即可

    html2canvas在ie下报Promise未定义错误解决方案-附件资源

    html2canvas在ie下报Promise未定义错误解决方案-附件资源

    vue 解决无法对未定义的值,空值或基元值设置反应属性报错问题

    但有时会发现,在操作过程中无法对未定义的值、空值或基本数据类型(基元值,如字符串、数字等)设置反应属性,这会引发错误提示:“Cannot set reactive property on undefined, null, or primitive value”。...

    运行word宏出现“子过程或函数未定义”怎么办.docx

    Word宏出现“子过程或函数未定义”故障分析和解决方法 在Word宏中出现“子过程或函数未定义”的故障可能是由于多种原因引起的,包括宏里的VBA编辑器问题、用户版本或工具箱安装问题、Word版本问题等。本文将对这些...

    自动爬取网页CrawlSpider1

    然而,`CrawlSpider`在其基础上增加了`rules`属性,这使得它能够从爬取的页面中提取链接并继续爬取。`rules`属性是一个规则列表,每个规则都是`Rule`对象,定义了如何处理和跟随提取的链接。 `Rule`类包含以下关键...

    sys未定义的解决方法

    ### Sys未定义的解决方法 在开发Web应用程序时,可能会遇到“sys未定义”的错误,尤其是在使用Ajax与ASP.NET结合的场景中。这种错误通常是因为系统未能正确引用或加载Ajax相关的库导致的。本文将详细介绍如何解决...

    解决WebForm_InitCallback() 未定义问题

    解决.net4.5+解决WebForm_InitCallback() 未定义问题,直接在问题页面引用即可。

    解决thinkphp5未定义变量会抛出异常,页面错误,请稍后再试的问题

    然而,在使用ThinkPHP5进行开发的过程中,经常会遇到因未定义变量而抛出异常的情况,这会导致页面出现错误提示:“页面错误,请稍后再试”。这个问题在开发和部署阶段尤其常见,对于提升用户体验和应用稳定性有重要...

    单例模式中声明静态自己类型的指针编译显示未定义处理

    然而,实现单例模式时,可能会遇到一些问题,比如“未定义的引用”错误,这通常是由于链接阶段找不到对应的符号导致的。这里我们将深入探讨如何解决这个问题。 首先,让我们理解为什么会出现“未定义的引用”错误。...

    excel提示用户定义类型未定义怎么办.docx

    Excel中用户定义类型未定义的解决方法 Excel中用户定义类型未定义是指在编译时出现的错误提示,原因是对象未正确创建或未引用相关库文件。本文将详细介绍解决此类错误的方法。 一、正确创建对象 在定义对象时,...

    vue中渲染对象中属性时显示未定义的解决

    在Vue.js开发过程中,我们经常会遇到在尝试渲染对象属性时,浏览器控制台抛出“未定义”的错误。这种情况通常是由于尝试访问的数据尚未被正确地挂载到Vue实例的`data`对象上,或者属性层级太深,Vue无法直接识别。...

    JSON2解决JSON未定义

    在实际项目中,通常会在页面头部通过`<script>`标签引入这个文件,以确保在处理JSON数据前,JSON接口已经可用。 总结来说,"JSON2解决JSON未定义"意味着在不支持JSON的旧版IE浏览器中,可以通过引入JSON2.js这个库...

    JSON.stringify()报错:JSON未定义

    标题中的“JSON.stringify()报错:JSON未定义”是一个常见的JavaScript错误,通常出现在尝试使用`JSON.stringify()`方法但全局环境中没有定义JSON对象时。在浏览器环境中,JSON是默认支持的,但在某些旧版本的IE...

    IE中兼容模式下JSON未定义

    在IE浏览器中,有时会遇到“JSON未定义”的错误,特别是在使用兼容模式或者较旧版本的IE时。这是因为JSON(JavaScript Object Notation)是ECMAScript 5引入的一个内置对象,而在IE8及以下版本中并未原生支持JSON。...

    AjaxControlToolkit未定义

    然而,“AjaxControlToolkit未定义”这个错误提示通常意味着在尝试使用该工具包时遇到了问题。这可能是由于多种原因导致的,我们将深入探讨这些原因以及相应的解决方法。 首先,我们需要确保正确地引用了...

    json2.js json未定义的解决方案!

    确保在使用任何JSON相关的代码之前加载这个库,通常是放在`<head>`标签内或页面底部的`<body>`标签关闭之前。 ```html <script src="json2.js"></script> ``` 2. **确保正确引用**:确保json2.js文件路径无误,且...

Global site tag (gtag.js) - Google Analytics