我正在尝试从网页源文件中获取值,这是我拥有的html规则
e=d.select("li[id=result_48]");
e=d.select("div[id=result_48]");
这是html标签
<li id="result_48" data-asin="0781774047" class="s-result-item">
<div id="result_48" data-asin="0781774047" class="s-result-item">
我想做的是代替“li”或“div”的任何东西我想在id中获取值...所以我想用RegX代替“li”或“div”
所以Jsoup元素应该检查id = result_48,如果有什么东西像我想要的那样数据。我怎么能这样做。
提前致谢
答案 0 :(得分:1)
使用不同的属性顺序进行测试。可能错过了一些案例,因此请测试您的实际数据。 假设id属性中没有空格和引号。
public static void main(String[] args) throws Exception {
String[] lines = {
"<li id=\"result_48\" data-asin=\"0781774047\" class=\"s-result-item\">",
"<div id=\"result_48\" data-asin=\"0781774047\" class=\"s-result-item\">",
"<div data-asin=\"0781774047\" id=\"result_48\" class=\"s-result-item\">",
"<div data-asin=\"0781774047\" class=\"s-result-item\" id=\"result_48\">" };
for (String str : lines) {
System.out.println(extractId(str));
}
}
private static String extractId(String line) {
String regex = "";
regex = regex + "(?:[<](?:li|div)).*id=\""; // match start until id="
regex = regex + "([^\\s^\"]+)"; // capture the id inside quotes (exclude
// spaces and quote)
regex = regex + "(?:.*\">)"; // match any characters until the end ">
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(line);
if (matcher.matches()) {
return matcher.group(1);
}
return null;
}