Java 使用HtmlUnit时出错

Java 使用HtmlUnit时出错,java,javascript,web,web-scraping,htmlunit,Java,Javascript,Web,Web Scraping,Htmlunit,当我执行这个简单的代码以文本形式获取网站内容时,它会显示我无法理解的错误 import java.io.IOException; import java.net.MalformedURLException; import com.gargoylesoftware.htmlunit.FailingHttpStatusCodeException; import com.gargoylesoftware.htmlunit.ScriptException; import com.gargoylesof

当我执行这个简单的代码以文本形式获取网站内容时,它会显示我无法理解的错误

import java.io.IOException;
import java.net.MalformedURLException;

import com.gargoylesoftware.htmlunit.FailingHttpStatusCodeException;
import com.gargoylesoftware.htmlunit.ScriptException;
import com.gargoylesoftware.htmlunit.WebClient;
import com.gargoylesoftware.htmlunit.html.HtmlPage;

public class sd {
    public static void main(String[] args) {
        sd vip=new sd();
        try {
            vip.homePage();
        } catch (Exception e) {
            e.printStackTrace();
        }

        System.out.print("sssss");
    }

    public void homePage() throws Exception, ScriptException {
        final WebClient webClient = new WebClient();
        final HtmlPage page =       
    (HtmlPage)webClient.getPage("http://timesofindia.indiatimes.com/");
        String pageAsText = page.asText();
        String pageAsXML = page.asXml();

        // System.out.println(pageAsXML);
        System.out.println("////////////////////output//////////////////////////"); 
        System.out.println(pageAsText);
        // System.out.println(pageAsXML);
        System.out.println("////////////////////output ends//////////////////////////"); 
    }

}
我得到的错误:

======= EXCEPTION START ======== Exception class=[com.gargoylesoftware.htmlunit.ScriptException] com.gargoylesoftware.htmlunit.ScriptException: Exception invoking jsxFunction_write at com.gargoylesoftware.htmlunit.javascript.JavaScriptEngine$HtmlUnitContextAction.run(JavaScriptEngine.java:595) Caused by: java.lang.RuntimeException: Exception invoking jsxFunction_write Caused by: com.gargoylesoftware.htmlunit.ScriptException: Exception invoking jsxFunction_write at com.gargoylesoftware.htmlunit.javascript.JavaScriptEngine$HtmlUnitContextAction.run(JavaScriptEngine.java:595) ======异常开始======== 异常类=[com.gargoylesoftware.htmlunit.ScriptException] com.gargoylesoftware.htmlunit.ScriptException:调用JSX函数的异常 在com.gargoylesoftware.htmlunit.javascript.JavaScriptEngine$HtmlUnitContextAction.run(JavaScriptEngine.java:595) 原因:java.lang.RuntimeException:调用jsxFunction_write的异常 原因:com.gargoylesoftware.htmlunit.ScriptException:调用jsxFunction_write的异常 在com.gargoylesoftware.htmlunit.javascript.JavaScriptEngine$HtmlUnitContextAction.run(JavaScriptEngine.java:595)
将webClient设置为不引发javascript异常

webClient.SetThroweExceptionOnScriptError(false)

如果不是ENOUGHT,则在初始化webclient时将FF设置为客户端行为

webClient=新的webClient(BrowserVersion.FIREFOX\u 3\u 6); webClient=新的webClient(BrowserVersion.FIREFOX_10);//取决于HtmlUnit版本


自HtmlUnit版本2.11以来,WebClient::SetThroweExceptionOnScriptError方法已被弃用。在较新版本中使用以下命令:

webClient.getOptions().setThrowExceptionOnScriptError(false);

就连我也犯了这个错误。此设置WebClient以抑制错误的选项适用于基本网站。但随着网站变得复杂,它实际上失败了

经过多次试验,我最终不得不做出选择。它是用C++编写的。我必须写一些,然后使用phantomjs。脚本将加载url并将数据写入文件

一旦文件准备好,我将编写一个java程序来加载文件数据,然后对该文件执行操作。为了加载和浏览数据,我使用了

如您所见,HtmlUnit、Jaunt、Jsoup支持完整的HTML、CSS。他们缺少的是不完全支持Javascript。这是引发错误的主要原因,例如引发异常、未加载完整页面等