如何将HTML DOM文档加载到Scala中?尝试加载xmlns标记时,XML单例有错误.
import java.net._
import java.io._
import scala.xml._
object NetParse {
import java.net.{URLConnection, URL}
import scala.xml._
def netParse(sUrl: String): Elem = {
var url = new URL(sUrl)
var connect = url.openConnection
XML.load(connect.getInputStream)
}
}
Run Code Online (Sandbox Code Playgroud)
最后我找到了解决方案!- 需要使用scala 2.7.7或更高版本(2.7.0有一个致命错误): 如何使用-TagSoup-with-Scala-XML
pri*_*kar 15
这可以帮助您 处理真实世界的HTML,就好像它是scala中的XML一样
请尝试使用scala.xml.parsing.XhtmlParser
.
我刚刚尝试使用scala 2.8.1的这个答案,最后使用了以下工作:
http://www.hars.de/2009/01/html-as-xml-in-scala.html
我需要的有趣的一点是:
val parserFactory = new org.ccil.cowan.tagsoup.jaxp.SAXFactoryImpl
val parser = parserFactory.newSAXParser()
val source = new org.xml.sax.InputSource("http://www.scala-lang.org")
val adapter = new scala.xml.parsing.NoBindingFactoryAdapter
adapter.loadXML(source, parser)
Run Code Online (Sandbox Code Playgroud)
我推荐Scala Scraper,它可以让你像这样优雅地解析 HTML:
// Parse elements from files, URLs or plain strings
val browser = JsoupBrowser()
val doc = browser.parseFile("core/src/test/resources/example.html")
val doc2 = browser.get("http://example.com")
val doc3 = browser.parseString("<html><h1>parse me</h1></html>")
// Extract the text inside the element with id "header"
doc >> text("#header")
// Extract the <span> elements inside #menu
val items = doc >> elementList("#menu span")
// From each item, extract all the text inside their <a> elements
items.map(_ >> allText("a"))
Run Code Online (Sandbox Code Playgroud)
示例取自 Scala Scraper 的自述文件。
归档时间: |
|
查看次数: |
21222 次 |
最近记录: |