2015-10-21 3 views
1

Я пытаюсь использовать Nashorn для анализа содержимого JS веб-страницы. Я использую следующий код для инициализации Насхорн и загрузить страницу:Nashorn parse web-страница

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())); отдавания me the error:

Caused by: jdk.nashorn.internal.runtime.ParserException: <eval> :1:0 Expected an operand but found <

Возможно, я неправильно понял, как это работает. Кто-нибудь может объяснить меня лучше?

выход URL является:

< SCRIPT type="....

+0

Вы, вероятно, ищете селен. – Thufir

ответ

2

Nashorn может оценить Javascript, но вы подаете в HTML-страницы в нем (который содержит только элемент сценария и сценарий) и, следовательно, он выходит из строя.

Вы можете загрузить URL-адрес, извлечь скрипт из элемента сценария (например, с помощью JSoup), а затем использовать Nashorn для запуска извлеченного скрипта.