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失敗 –