【问题标题】:Scala HTML parser object usageScala HTML解析器对象使用
【发布时间】:2012-07-10 06:38:33
【问题描述】:

我正在使用 HTML 解析器来解析一个 HTML 字符串:

import nu.validator.htmlparser.{sax,common}
import sax.HtmlParser
import common.XmlViolationPolicy

val source = Source.fromString(response)
val html = new models.HTML5Parser
val htmlObject = html.loadXML(source)

如何提取对象中特定元素的值?我可以使用以下方法获取孩子和标签:

val child = htmlObject.child(1).label

但我不知道如何获取孩子的内容。另外,我不知道如何遍历子对象。

【问题讨论】:

    标签: html parsing scala


    【解决方案1】:

    目前尚不清楚您的 HTML5Parser 类来自哪里,但我会假设它是 this example 中的那个(或类似的)。在这种情况下,您的htmlObject 只是一个scala.xml.Node。首先进行一些设置:

    val source = Source.fromString(
      "<html><head/><body><div class='main'><span>test</span></div></body></html>"
    )
    
    val htmlObject = html.loadXML(source)
    

    现在您可以执行以下操作,例如:

    scala> htmlObject.child(1).label
    res0: String = body
    
    scala> htmlObject.child(1).child(0).child(0).text
    res1: String = test
    
    scala> (htmlObject \\ "span").text
    res2: String = test
    
    scala> (htmlObject \ "body" \ "div" \ "span").text
    res3: String = test
    
    scala> (htmlObject \\ "div").head.attributes.asAttrMap
    res4: Map[String,String] = Map(class -> main)
    

    等等。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-09-04
      • 2010-12-14
      • 1970-01-01
      • 1970-01-01
      • 2020-12-15
      • 2012-08-18
      • 2011-07-01
      • 1970-01-01
      相关资源
      最近更新 更多