如何使用 jsoup 从网页中提取 javascript 的某些部分?
How extract some part of a javascript from a webpage using jsoup?
我想从 blow 脚本中提取一些数据
$(document).ready(function(){
$("#areaName").val(1);$("#state").val(29);$("#city").val(1);
$("#subareaName").val(1);$("#lane").val(1);
}
like areaName value = 1, state value = 29, city value = 1, subareaName value = 1, lane value = 1
如何使用 jsoup 实现此目的?
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);
}
我想从 blow 脚本中提取一些数据
$(document).ready(function(){
$("#areaName").val(1);$("#state").val(29);$("#city").val(1);
$("#subareaName").val(1);$("#lane").val(1);
}
like areaName value = 1, state value = 29, city value = 1, subareaName value = 1, lane value = 1
如何使用 jsoup 实现此目的?
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);
}