【问题标题】: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