如何使用jsoup从网页中提取JavaScript的某些部分?

时间:2019-08-21 18:40:21

标签: javascript android jsoup

我想从打击脚本中提取一些数据

$(document).ready(function(){ 
  $("#areaName").val(1);$("#state").val(29);$("#city").val(1);
  $("#subareaName").val(1);$("#lane").val(1);
}

like areaName值= 1,州值= 29,城市值= 1,subareaName值= 1,车道值= 1

如何使用jsoup实现此目的?

1 个答案:

答案 0 :(得分:0)

Jsoup是html(xml)解析器。您可以使用它从页面源中提取javascript,例如:Elements scripts = document.select("script");

然后,您将必须自己解析脚本。您可以使用正则表达式来这样做。 这是一个例子。

    final String propertyName = "areaName";
    final String regex = "#" + propertyName + ".*?val\\((.*?)\\)";
    final String script = "$(document).ready(function(){ \n"
            + "  $(\"#areaName\").val(1);$(\"#state\").val(29);$(\"#city\").val(1);\n"
            + "  $(\"#subareaName\").val(1);$(\"#lane\").val(1);\n"
            + "}";

    final Pattern pattern = Pattern.compile(regex, Pattern.MULTILINE);
    final Matcher matcher = pattern.matcher(script);

    if (matcher.find() && matcher.groupCount() > 0) {
        String areaName = matcher.group(1);
        System.out.println(propertyName + ": " + areaName);
    }