Nashorn解析网页

时间:2015-10-21 09:01:34

标签: java nashorn

我试图使用Nashorn来解析网页的JS内容。 我使用以下代码初始化Nashorn并加载页面:

ScriptEngineManager manager = new ScriptEngineManager();
ScriptEngine eng = manager.getEngineByName("nashorn");
//...
        URL url = new URL("http://192.168.1.1/userRpm/StatusRpm.htm");
        URLConnection connection = url.openConnection();
        try {
            eng.eval(new InputStreamReader(connection.getInputStream()));
            value = eng.get("mobileParam[0]");
            System.out.println(value);
        } catch (ScriptException ex) {
            Logger.getLogger(Router.class.getName()).log(Level.SEVERE, null, ex);
        }

URLConnection能够到达页面,我试图打印输出并且它有效,但由于奇怪的原因,指令:eng.eval(new InputStreamReader(connection.getInputStream()));给我错误:

  

引起:jdk.nashorn.internal.runtime.ParserException:<eval>:1:0预期操作数但找到&lt;

也许我误解了它的运作方式。谁能更好地解释我?

URL的输出是:

  

&LT; SCRIPT类型=&#34; ....

1 个答案:

答案 0 :(得分:2)

Nashorn可以评估Javascript,但是你正在向它提供一个HTML页面(它只包含一个脚本元素和一个脚本),因此它失败了。

您可以加载URL,从脚本元素中提取脚本(例如使用JSoup),然后使用Nashorn运行提取的脚本。