java - 删除 JSoup 抓取检索到的重复元素

标签 java web-scraping jsoup

在我的抓取功能中,我检索 DOM 中存在的链接。

Elements links = doc.getElementsByTag("a");

for (Element link : links) {
    String linkHref = link.attr("href");
    if(linkHref.contains("/blog/")){
        System.out.print("Link: " + linkHref + "\n");
    }
}

这很有效。

我想要知道的是删除 Elements 对象中的重复链接

这可能吗?如果没有,我可以轻松找到使用字符串数组的解决方法,但我更喜欢惯用的解决方案。

谢谢

最佳答案

您可以使用HashSet来实现这一点。 HashSet 是一种存储唯一元素集的数据结构,因此如果存在重复链接,您的 HashSet 中将不会包含它们。

Elements links = doc.getElementsByTag("a");
Set<String> set = new HashSet<String>();
for (Element link : links) {
    String linkHref = link.attr("href");
    if(linkHref.contains("/blog/")){
        set.add(linkHref);
        System.out.print("Link: " + linkHref + "\n");
    }
}

关于java - 删除 JSoup 抓取检索到的重复元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48413434/

相关文章:

java - 创建一个没有用户界面的单独类

python - 嵌套标签网络抓取python

android - 使用python在android上抓取网页

python - 关于数据类型的 BeautifulSoup 代码问题

java - 创建一个 JSONArray

java - 无法应对继承

java - Java 中的泛型,通用函数

java - 从 jsoup 中的多个 <p> 标签中解析单个 <p> 标签

java - Jsoup提取一组选择器直到到达指定的选择器

java - 使用Jsoup提取特定的html表格内容