爬虫中使用的数据结构

来源:互联网 发布:女性 音乐家 知乎 编辑:程序博客网 时间:2024/06/05 05:43

我选择HashSet和LinkedList来保存待访问URL和已访问的URL。

package com.js.demo01;/** * 队列用于保存待爬取的URL */import java.util.LinkedList;public class Queue {private LinkedList<Object> queue = new LinkedList<Object>();/** * 入队列 * @param t 待进入队列的URL * @return void 无返回值 */public void enQueue(Object t){queue.addLast(t);}/** * 出队列 * @return 本次出队列的URL */public Object deQueue(){return queue.removeFirst();}/** * 判断队列是否为空 * @return 返回判断结果 true为空 */public boolean isQueueEmpty(){return queue.isEmpty();}/** * 判断队列是否包含 * @param t 待判断是否包含的对象t * @return 返回判断结果 true为包含 */public boolean contains(Object t) {return queue.contains(t);}/** * 清空队列 * @return 返回队列是否为空的判断结果 */public boolean empty(){return queue.isEmpty();}}

package com.js.demo01;import java.util.HashSet;import java.util.Set;/** * HashSet用于记录已爬取的URL * @author js * */public class LinkQueue {//已访问的URL集合private static Set<Object> visitedUrl = new HashSet<Object>();//待访问的URL集合private static Queue unVisitedUrl = new Queue();//获得URL队列public static Queue getUnVisitedUrl(){return unVisitedUrl;}//添加到访问过的URL队列中public static void addVisitedUrl(String url){visitedUrl.add(url);}//移除访问过的URLpublic 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&&url.trim().equals("")&&!visitedUrl.contains(url)&&!unVisitedUrl.contains(url))unVisitedUrl.enQueue(url);}//获得已访问的URL数目public static int getVisitedUrlNum(){return visitedUrl.size();}//判断未访问的URl队列中是否为空public static boolean unVisitedurlsEmpty(){return unVisitedUrl.empty();}}


原创粉丝点击