2011-10-02 106 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库的特定行的代码。