package xyz.anduo.crawler;
import java.util.HashSet;
import java.util.Set;
public class LinkQueue {
// 已访问的url集合
@SuppressWarnings("rawtypes")
private static Set visitedUrl = new HashSet();
// 待访问的url集合
private static Queue unVisitedUrl = new Queue();
// private static Queue unVisitedUrl = new PriorityQueue();//带偏好的爬虫,使用支持优先队列的数据结构
// 获取URL队列
public static Queue getUnVisitedUrl() {
return unVisitedUrl;
}
// 添加到访问过的url队列中
@SuppressWarnings("unchecked")
public static void addVisitedUrl(String url) {
visitedUrl.add(url);
}
// 移除访问过的url
public static void removeVisitedUrl(String url) {
visitedUrl.remove(url);
}
// 未访问的url出队列
public static Object unVisitedUrlDeQueue() {
return unVisitedUrl.deQueue();
}
// 保证每个url只被访问一次
public static void addUnVisitedUrl(String url) {
if (url != null && !"".equals(url.trim()) && !visitedUrl.contains(url)
&& !unVisitedUrl.contians(url)) {
unVisitedUrl.enQueue(url);
}
}
// 获得已经访问的url数目
public static int getVisitedUrlNum() {
return visitedUrl.size();
}
// 判断未访问的url队列中是否为空
public static boolean unVisitedUrlIsEmpty() {
return unVisitedUrl.isQueueEmpty();
}
}