【问题标题】:Navigation HTML with Scala [closed]使用 Scala 导航 HTML [关闭]
【发布时间】:2014-11-22 12:43:44
【问题描述】:

我想用 Scala 打开一个 html 源代码然后导航。我是 Scala 的新手,所以我的问题是最好的导航类是什么。我在哪里会有 getFirstChild 之类的方法?

//get html
val html = Source.fromURL("https://www.google.com")
// now what?

【问题讨论】:

    标签: html scala treenode tree-traversal


    【解决方案1】:

    HTML 文档是一个 xml 文档,因此您可以使用 scala 功能来处理 xml。 Here 是一篇对 scala 的 XML 处理能力进行基本概述的文章。当然,还有很多简化标准 scala 机制的 java/scala 库。

    【讨论】:

    • 值得注意的是,有效的 HTML 文档并不总是有效的 XML 文档(除非它是 XHTML)——更不用说现实世界的 HTML 页面通常一开始就不是有效的 HTML。一种解决方案是通过一个清洁器库传递 HTML,该清洁器库将尝试纠正任何无效的 XML - here's an example 使用名为 HTMLCleaner 的 Java 库。
    【解决方案2】:

    AFAIK,Scala 不直接支持 HTML(尽管它支持内置的 XML)。例如:

    scala> import scala.io.Source
    scala> import scala.xml.XML
    scala> val html = Source.fromURL("https://www.google.com")
    scala> XML.loadString(html.toString)
    org.xml.sax.SAXParseException; lineNumber: 1; columnNumber: 1; Content is not allowed in prolog.
        at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(ErrorHandlerWrapper.java:198)
    

    这是因为并非所有 HTML 文档都不是格式良好的 XML 文档。为了克服这个问题,您可以使用 Java 中的任何 HTML 处理库。在此处查看示例:

    http://alvinalexander.com/scala/scala-html-parsing

    【讨论】:

      猜你喜欢
      • 2014-03-15
      • 1970-01-01
      • 1970-01-01
      • 2016-01-19
      • 2015-03-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多