Groovy htmlunit - PullRequest
       22

Groovy htmlunit

1 голос
/ 27 октября 2010

У меня проблемы с импортом htmlunit (htmlunit.sf.net) в отличный скрипт.

В настоящее время я просто использую пример сценария, который был в сети, и он не может разрешить класс com.gargoylesoftware.htmlunit.WebClient

Сценарий:

import com.gargoylesoftware.htmlunit.WebClient

client = new WebClient()
html = client.getPage('http://www.msnbc.msn.com/')
println page.anchors.collect{ it.hrefAttribute }.sort().unique().join('\n')

Я загрузил исходный код с веб-сайта и поместил папку com (и все ее содержимое), где был расположен мой скрипт.

Кто-нибудь знает, с какой проблемой я сталкиваюсь? Я не совсем уверен, почему он не будет импортировать

Ответы [ 2 ]

2 голосов
/ 27 октября 2010

Вы можете использовать Grape, чтобы получить зависимость для вас во время выполнения скрипта.Самый простой способ сделать это - добавить аннотацию @Grab в оператор импорта.

Например:

@Grab('net.sourceforge.htmlunit:htmlunit:2.7')
import com.gargoylesoftware.htmlunit.WebClient

client = new WebClient()

// Added as HtmlUnit had problems with the JavaScript
client.javaScriptEnabled = false
html = client.getPage('http://www.msnbc.msn.com/')
println page.anchors.collect{ it.hrefAttribute }.sort().unique().join('\n')

Есть только одна проблема.Похоже, что страница слишком сложна для HtmlUnit.Когда я запускал код, я каждый раз получал OutOfMemoryException.Я бы предложил вместо этого загрузить html обычным способом, а затем использовать что-то вроде NekoHtml или TagSoup, чтобы разобрать html в XML и работать с ним таким образом.

В этом примере TagSoup используется для работы с html в качестве xml в Groovy.: http://blog.foosion.org/2008/06/09/parse-html-the-groovy-way/

1 голос
/ 27 октября 2010

вам просто нужно скачать zip-файл, распаковать jar-файл (ы) и поместить их в путь к классу при компиляции ... Вам не нужен источник

http://sourceforge.net/projects/htmlunit/files/htmlunit/2.8/htmlunit-2.8.zip/download

...