使用htmlunit对网站进行嵌入

时间:2011-10-02 18:09:31

标签: dump htmlunit

我正在尝试使用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();

有些人说我需要在我的代码中引入暂停,因为该页面需要一段时间才能在Google Chrome中加载,但是我设置了很长的停顿时间并且无法正常工作。

先谢谢。

1 个答案:

答案 0 :(得分:0)

只是一些想法......

使用wget检索该网址会返回一个非平凡的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库的特定行。