Разбирайте JavaScript с помощью jsoup

На странице HTML я хочу выбрать значение переменной javascript. Ниже приведен фрагмент страницы HTML.

<input id="hidval" value="" type="hidden"> 
<form method="post" style="padding: 0px;margin: 0px;" name="profile" autocomplete="off">
<input name="pqRjnA" id="pqRjnA" value="" type="hidden">
<script type="text/javascript">
    key="pqRjnA";
</script>

Моя цель - прочитать значение переменной key на этой странице с помощью jsoup. Возможно ли это с помощью jsoup? если да, то как?

Ответ 1

Поскольку jsoup не является библиотекой javascript, у вас есть два способа решить эту проблему:

A. Используйте javascript-библиотеку

  • Pro:

    • Поддержка полного Javascript
  • Con:

    • Дополнительные либраны/зависимости

В. Используйте Jsoup + ручной синтаксический анализ

  • Pro:

    • Никаких дополнительных библиотек не требуется
    • Достаточно для простых задач
  • Con:

    • Не так гибко, как библиотека javascript

Вот пример, как получить key с jsoupand некоторым "ручным" кодом:

Document doc = ...
Element script = doc.select("script").first(); // Get the script part


Pattern p = Pattern.compile("(?is)key=\"(.+?)\""); // Regex for the value of the key
Matcher m = p.matcher(script.html()); // you have to use html here and NOT text! Text will drop the 'key' part


while( m.find() )
{
    System.out.println(m.group()); // the whole key ('key = value')
    System.out.println(m.group(1)); // value only
}

Вывод (с использованием вашей части html):

key="pqRjnA"
pqRjnA