使用Scala导航HTML
我想用Scala打开一个html源代码,然后导航。我是Scala新手,所以我的问题是什么是用于导航的最佳类。哪里有像getFirstChild这样的方法使用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
//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库。