是否可以从此网站中找到评论级别,如下所示? https://www.ozbargain.com.au/node/249439#comment-3719026
从jsoup我可以解析评论,用户名等,但我无法获得正确的评论级别。
查看该页面的来源,与正确的实时帖子不符,除非我读错了。
有没有办法解决这个问题?
我能够使用以下方式生成源评论级别:
String url = "https://www.ozbargain.com.au/node/249439";
Document doc = Jsoup.connect(url).get();
Elements level = doc.select("ul.comment");
for(Element column : e.select("ul")){
//comment level
System.out.println(column.attr("class"));
levels.add(column.attr("class"));
}
但它看起来并不合适。仅显示0级评论中的1等。
由于
答案 0 :(得分:1)
for(Element column : e.select("ul")) { //comment level System.out.println(column.attr("class")); levels.add(column.attr("class")); }
从上面的代码e
来自哪里?
无论如何,您需要解析类属性值才能找到注释级别。
这是一个工作示例代码:
public static void main(String[] args) throws IOException {
String url="https://www.ozbargain.com.au/node/249439#comment-3719026";
Document doc = Jsoup.connect(url).get();
Elements comments = doc.select("div.comment-wrap");
Matcher levelMatcher = Pattern.compile("(?i)^(.*level)(\\d+)(.*)$").matcher("");
List<String> levels = new ArrayList<>();
System.out.println("Comments found: "+ comments.size());
for (Element comment : comments) {
if (levelMatcher.reset(comment.parent().parent().className()).find()) {
levels.add(levelMatcher.replaceAll("$2"));
}
}
System.out.println(levels);
}
Comments found: 38
[0, 1, 2, 3, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1, 2, 3, 3, 1, 2, 3, 3, 0, 1, 2, 3, 2, 3, 3, 2, 0, 0, 0, 1, 2, 3]
Comments found: 14
[0, 1, 0, 1, 0, 1, 1, 2, 1, 0, 0, 1, 2, 0]