Как использовать Goose в Java Project
Как я могу использовать Goose в Java-проекте? Я тестировал онлайн-версию как котельной трубы, так и гуся, и последняя из них намного лучше, но теперь она разработана в Scala.
Я искал банку предыдущей версии, но не могу ее найти (ни api). Последний.jar, который я попробовал, это: goose-2.1.22. Я импортировал его в свой проект Ecplise и попробовал с этим кодом:
String url = "http://www.cnn.com/2010/POLITICS/08/13/democrats.social.security/index.html";
Goose goose = new Goose(new Configuration());
Article article = goose.extractContent(url);
System.out.println(article.cleanedArticleText());
Но я получаю эту ошибку:
Exception in thread "main" java.lang.NoClassDefFoundError: scala/ScalaObject
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClassCond(ClassLoader.java:631)
at java.lang.ClassLoader.defineClass(ClassLoader.java:615)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:283)
at java.net.URLClassLoader.access$000(URLClassLoader.java:58)
at java.net.URLClassLoader$1.run(URLClassLoader.java:197)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
at daweb.main(daweb.java:212)
Caused by: java.lang.ClassNotFoundException: scala.ScalaObject
at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
... 13 more
Можно ли использовать Goose без Scala?
4 ответа
Если вы управляете своими зависимостями с помощью Maven, вы можете просто добавить Goose в раздел зависимостей вашего pom.xml, и все его транзитивные зависимости окажутся на пути к классам.
<dependency>
<groupId>com.gravity</groupId>
<artifactId>goose</artifactId>
<version>2.1.22</version>
</dependency>
Вы должны добавить scala-library
баночка к твоему классному пути. Если вы используете Maven, добавьте эту зависимость в ваш проект:
<dependency>
<groupId>org.scala-lang</groupId>
<artifactId>scala-library</artifactId>
<version>2.10.4</version>
</dependency>
На странице вопросов есть ссылка, где вы можете найти.jar, скомпилированный для использования в java. https://github.com/GravityLabs/goose/issues
import com.gravity.goose.*;
String url = "http://www.straitstimes.com/little-india-riot";
Goose goose = new Goose(new Configuration());
Article article = goose.extractContent(url);
System.out.println(article.cleanedArticleText());
Этот код работает как начало.