上一篇文章讲了利用Jsoup爬取贴吧帖子里的邮箱,虽然爬取成功了,但我对效率有所追求。10页的帖子爬取了两百多个邮箱,最快用时8秒,一般需要9秒。在思考了一下怎么提升效率后,决定采用多线程的方式爬取网页内的邮箱。废话不多说,直接上代码。
引入Jsoup的jar包此处省略,没有的可以查看上篇文章。
import java.io.IOException;
import java.util.HashSet;
import java.util.Queue;
import java.util.Set;
import java.util.concurrent.LinkedBlockingQueue;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
/**
* 多线程爬取邮箱
* @author pactera
*
*/
public class JsoupTest4 {
/**
* Queue:先入先出(FIFO)的数据结构
* LinkedBlockingQueue:一个由链接节点支持的可选有界队列
*/
//等待爬取的url
private static volatile Queue<String> queue = new LinkedBlockingQueue<String>();
//爬取过的url
private static volatile Set<String> allOverUrl=new HashSe