2
我想申请ExecutorService从递归读取路径从url中给出的格式,我有困难试图回忆递归 getRecursive(element.attr(“abs:href”),level);执行器与Jsoup递归
public class NewClass {
static String levels[] = {"div.col-md-9 li a", "div#sidebar ul li a"};
private void getRecursive(String href,int level) {
if (level > levels.length - 1) {
return;
}
Document doc;
try {
doc = Jsoup.connect(href).get();
Elements elements = doc.select(levels[level]);
level++;
ExecutorService executor = Executors.newFixedThreadPool(5);
for (final Element element : elements) {
executor.execute(new Runnable() {
@Override
public void run() {
if (!element.attr("href").isEmpty()) {
String links = "";
links += element.attr("abs:href") + "\n";
System.out.println(links);
getRecursive(element.attr("abs:href"), level);
}
}
});
}
} catch (IOException e1) {
e1.printStackTrace();
}
}
public static void main(String[] args) {
new NewClass().getRecursive("http://www.java2s.com/", 0);
}
}
它的工作原理很好。谢谢泰特斯 –
@马塔姆欢迎你,祝你好运。 – Titus
我想问你如何检查工作是否完成。我试图在main中应用executor.isTerminated()。但仅当您调用shutdown()并且所有子任务已完成时,@Test失败 –