是否有可能像下面这样从此网络中找到评论级别?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。
谢谢
for(Element column : e.select("ul")) { //comment level System.out.println(column.attr("class")); levels.add(column.attr("class")); }
从上面的代码是e
从哪里来的?
无论如何,您需要解析class属性值以找到注释级别。
这是一个有效的示例代码:
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]
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句