Jsoup解析 - 同时解析多个链接

4
我有一个程序,能够逐个从网站列表中获取HTML文档并解析它。
ArrayList<String> links = new ArrayList<>();

for(String link : links) {
    try {
        Document doc = Jsoup.connect(link).get();
        getInfo(doc);
    }catch (IOException e) {
        e.printStackTrace();
    }
}

问题是,获取HTML文档的速度太慢了,比如获取site1、site2和site3。

我的问题是,是否可能使这段代码同时连接到5个链接,然后再解析它们,而不是一个接一个地进行。


1
可以通过创建5个线程并将它们并行运行来实现。在Google(或StackOverflow)上搜索Java并发性。 - TDG
1个回答

5

是的。

使用Java8中最简单的方法可能就是使用并行流。

ArrayList<String> links = new ArrayList<>();

links.parallelStream().forEach(link -> {
  try {
    Document doc = Jsoup.connect(link).get();
    getInfo(doc);
  }catch (IOException e) {
    e.printStackTrace();
  }
});

当然还有其他很多选择,包括线程,执行器池等——只需使用 Google 搜索并了解并发性、线程等相关内容。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接