2010-10-27 3 views
1

У меня возникли проблемы с импортом htmlunit (htmlunit.sf.net) в groovy-скрипт.Groovy htmlunit

я в настоящее время только с помощью примера сценария, который был в Интернете, и это дает мне не в состоянии разрешить учащемуся 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 (и все ее содержимое), где находился мой скрипт.

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

+0

аккуратным почерком образца, кстати. –

ответ

2

Вы можете использовать виноград, чтобы получить для вас зависимыми пакетов во время выполнения сценария. Самый простой способ сделать это - добавить аннотацию @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/

+0

Я пошел вперед и дал этот снимок (с несколькими URL-адресами), и сценарий, похоже, там висит. Я позволил ему висеть в течение нескольких минут и просто ctrl + c'd. Я действительно хотел использовать htmlunit, потому что мне сказали, что он касается javascript lol, возможно, меня проинформировали неправильно? – StartingGroovy

+0

Получил это, чтобы перестать висели ... Хм я пошел дальше и протестировал это с помощью ссылки msnbc и получил: ** com.gargoylesoftware.htmlunit createElementNS INFO: Плохой тип ввода: «type», создающий текстовый ввод **, поэтому я тогда попробовал это с http://www.perl.com/CPAN/, и он сказал мне ** Нет такого свойства: страница для класса ** Я не знаю, почему это скажет мне, что страница не существует – StartingGroovy

+0

Во всяком случае, вы ответили на мой первоначальный вопрос. Я собираюсь сделать это так же решенным. Спасибо xlson – StartingGroovy

Смежные вопросы