2010-10-27 37 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

整齊的示例腳本,順便說一句。 – 2013-01-18 00:30:11

回答

2

您可以在腳本運行時使用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/

+0

我繼續前進,並給了一個鏡頭(與多個網址)和腳本似乎掛在那裏。我讓它掛了幾分鐘,然後按ctrl + c出來。我實際上是想使用htmlunit,因爲我被告知它處理了javascript lol,也許我被錯誤地通知了? – StartingGroovy 2010-10-29 20:35:19

+0

得到它停止掛...嗯,我繼續前進,並與msnbc鏈接並收到測試:** com.gargoylesoftware.htmlunit createElementNS信息:錯誤的輸入類型:「type」,創建一個文本輸入**所以我然後嘗試它與http://www.perl.com/CPAN/,它告訴我**沒有這樣的屬性:類的頁面**我不知道爲什麼它會告訴我頁面不存在 – StartingGroovy 2010-10-29 20:45:19

+0

無論如何,你回答了我原來的問題。我會解決這個問題。謝謝xlson – StartingGroovy 2010-10-30 00:31:32