2014-09-27 3 views
1

Я хочу открыть html-источник с помощью Scala, а затем перейти. Я новичок в Scala, поэтому мой вопрос - это лучший класс для навигации. Где бы у меня были методы вроде getFirstChild?Навигация HTML с Scala

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

ответ

1

HTML-документ - это XML-документ, поэтому вы можете использовать возможности scala для работы с xml. Here - это статья, которая дает базовый обзор возможностей обработки XML в scala. Конечно, существует множество библиотек java/scala, которые упрощают стандартный механизм scala.

+1

Стоит отметить, что действительный HTML документ не всегда является действительным документом XML (если это не XHTML) - не говоря уже о том, что в реальном мире HTML-страницы часто даже не действительны HTML для начала. Одним из решений является передача HTML через чистую библиотеку, которая попытается исправить что-либо недопустимое XML - [здесь приведен пример] (http://alvinalexander.com/scala/scala-html-parsing) с использованием библиотеки Java называемый HTMLCleaner. –

1

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. Чтобы преодолеть это, вы можете использовать любую библиотеку обработки HTML в Java. Проверьте пример здесь:

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