2011-10-02 102 views
0

我想使用HTMLUnit轉儲某個站點的全部內容,但是當我嘗試在某個(相當奇特的)站點中執行此操作時,我得到一個空文件(而不是每個空文件se,但它有一個空頭標籤,一個空的身體標籤,就是這樣)。使用htmlunit入站網站

該網站是https://www.abcdin.cl/abcdin/abcdin.nsf#https://www.abcdin.cl/abcdin/abcdin.nsf/linea?openpage&cat=Audio&cattxt=TV%20y%20Audio&catpos=03&linea=LCD&lineatxt=LCD%20&

這裏是我的代碼:

BufferedWriter writer = new BufferedWriter(new FileWriter(fullOutputPath)); 
HtmlPage page; 
final WebClient webClient = new WebClient(BrowserVersion.INTERNET_EXPLORER_8); 
webClient.setCssEnabled(false); 
webClient.setPopupBlockerEnabled(true); 
webClient.setRedirectEnabled(true); 
webClient.setThrowExceptionOnScriptError(false); 
webClient.setThrowExceptionOnFailingStatusCode(false); 
webClient.setUseInsecureSSL(true); 
webClient.setJavaScriptEnabled(true); 
page = webClient.getPage(url); 
dumpString += page.asXml(); 
writer.write(dumpString); 
writer.close(); 
webClient.closeAllWindows(); 

有人說,我要在我的代碼引入一個暫停,因爲頁面需要一段時間,谷歌瀏覽器加載,但我設置了很長的停頓時間,但不起作用。

謝謝先進。

回答

0

只是一些想法...

檢索與wget該URL返回一個不平凡的HTML文件。同樣使用webClient.setJavaScriptEnabled(false)運行您的代碼。所以這絕對是與頁面中的Javascript有關的。

啓用JavaScript,我從一堆的Javascript工作正在排隊的日誌中看到,和我看到相應的錯誤是這樣的:

EcmaError: lineNumber=[49] column=[0] lineSource=[<no source>] name=[TypeError] sourceName=[https://www.abcdin.cl/js/jquery/jquery-1.4.2.min.js] message=[TypeError: Cannot read property "nodeType" from undefined (https://www.abcdin.cl/js/jquery/jquery-1.4.2.min.js#49)] 
com.gargoylesoftware.htmlunit.ScriptException: TypeError: Cannot read property "nodeType" from undefined (https://www.abcdin.cl/js/jquery/jquery-1.4.2.min.js#49) 
at  
com.gargoylesoftware.htmlunit.javascript.JavaScriptEngine$HtmlUnitContextAction.run(JavaScriptEngine.java:601) 

也許這些工作是爲了填充您的HTML?所以當他們失敗時,產生的HTML是空的?

錯誤看起來很奇怪,因爲HtmlUnit通常沒有JQuery的問題。我懷疑問題是調用JQuery庫的特定行的代碼。