Java Jsoup连接在多个线程上拆分
我试图在Jsoup中创建简单的爬虫程序。它在网站的源代码中找到所有链接,并最终跟踪它们,再次在每个源代码中搜索新链接,以此类推 问题是,经过两次重定向之后,计算时间相当长 这是它工作原理的伪代码:Java Jsoup连接在多个线程上拆分,java,multithreading,jsoup,Java,Multithreading,Jsoup,我试图在Jsoup中创建简单的爬虫程序。它在网站的源代码中找到所有链接,并最终跟踪它们,再次在每个源代码中搜索新链接,以此类推 问题是,经过两次重定向之后,计算时间相当长 这是它工作原理的伪代码: function follow_links(String[] links) { for(int i=0; i<=links.amount-1; i++) { Document doc = Jsoup.connect(links[i]); String[] newlinks =
function follow_links(String[] links)
{
for(int i=0; i<=links.amount-1; i++)
{
Document doc = Jsoup.connect(links[i]);
String[] newlinks = new String[max];
newlinks = parse(doc);
...
}
}
函数跟踪链接(字符串[]链接)
{
对于(int i=0;i我不这么认为。如果你的应用程序通过1000个链接,你将创建1000个线程,这将破坏你的整个应用程序性能。查看此项了解更多信息
最好保留一个线程池,并将“搜索”作为任务提交。CompletableFuture with ExecutorServices似乎是解决方案
这里是Stack上的主题,一个家伙试图在他的爬虫中实现相同的想法