Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Scala导航HTML_Html_Scala_Treenode_Tree Traversal - Fatal编程技术网

使用Scala导航HTML

使用Scala导航HTML,html,scala,treenode,tree-traversal,Html,Scala,Treenode,Tree Traversal,我想用Scala打开一个html源代码,然后导航。我是Scala新手,所以我的问题是什么是用于导航的最佳类。哪里有像getFirstChild这样的方法 //get html val html = Source.fromURL("https://www.google.com") // now what? HTML文档是xml文档,因此您可以使用scala功能来处理xml。这篇文章对scala的XML处理功能进行了基本概述。当然,有很多java/scala库简化了标准scala机制。好吧,sca

我想用Scala打开一个html源代码,然后导航。我是Scala新手,所以我的问题是什么是用于导航的最佳类。哪里有像getFirstChild这样的方法

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

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

好吧,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处理库。检查此处的示例:


值得注意的是,一个有效的HTML文档并不总是一个有效的XML文档(除非它是XHTML)——更不用说现实世界中的HTML页面往往一开始就不是有效的HTML。一种解决方案是通过一个更干净的库传递HTML,该库将尝试更正任何无效的XML—使用一个名为HTMLCleaner的Java库。