【发布时间】:2016-06-26 15:55:46
【问题描述】:
我有下面的代码,它使用 JSoup 抓取网站,但我想同时抓取 多个 URL。 我将 URL 存储在一个数组中,但我无法让它工作。 如果我想使用这段代码,如何在多线程中实现它?多线程适合这样的应用程序吗?
public class Webcrawler {
public static void main(String[] args) throws IOException {
String [] url = {"http://www.dmoz.org/","https://docs.oracle.com/en/"};
//String [] url = new String[3];
//url[0] = "http://www.dmoz.org/";
//url[1] = "http://www.dmoz.org/Computers/Computer_Science/";
//url[2] = "https://docs.oracle.com/en/";
for(String urls : url){
System.out.print("Sites to be crawled\n " + urls);
}
//String url = "http://www.dmoz.org/";
print("\nFetching %s...", url);
Document doc = Jsoup.connect(url[0]).get();
org.jsoup.select.Elements links = doc.select("a");
//doc.select("a[href*=https]");//(This is the one you are looking for)selects if value of href contatins https
print("\nLinks: (%d)", links.size());
for (Element link : links) {
print(" (%s)", link.absUrl("href") /*link.attr("href")*/, trim(link.text(), 35));
}
}
private static void print(String msg, Object... args) {
System.out.println(String.format(msg, args));
}
private static String trim(String s, int width) {
if (s.length() > width)
return s.substring(0, width-1) + ".";
else
return s;
}
}
【问题讨论】:
-
我觉得这很有帮助。请花一些时间来完成....mrbool.com/…
-
“我无法让它工作”不是问题描述。 究竟你的问题是什么?
-
@Raedwald,我的问题是我想创建一个可以同时爬取多个网站的网络爬虫,现在它只爬取单个站点/url。我想将 url 存储在一个数组中并抓取它们
标签: java web-crawler jsoup