Java小菜鸟虚心求教 关于网络爬虫
老师让编一个爬虫 编得我意识都模糊了 可是最后就是差一点 刚不住了 求各位大神指点迷津
这是主程序:
程序代码:
import import java.util.Set; public class MyCrawler { public static void main(String args[]) throws IOException{ LinkQueue.addUnvisitedUrl("http://www.baidu.com"); //循环条件:待抓取的链接不空且抓取的网页不多于100 while(!LinkQueue.unVisitedUrlsEmpty() &&LinkQueue.getVisitedUrlNum()<=100){ //队头URL出队列 String visitUrl = (String) LinkQueue.unVisitedUrlDeQueue(); if(visitUrl==null){ continue; } DownPage downpage = new DownPage(); //下载网页 String filePath = downpage.downpage(visitUrl); //该URL放入已访问的URL中 LinkQueue.addVisitedUrl(visitUrl); //提取出下载网页中的URL Set<String> links = collectUrl.collect(filePath); //新的未访问的URL入队 for(String link:links){ LinkQueue.addUnvisitedUrl(link); } } } }
表单我是参照其他书上写的
程序代码:
import java.util.LinkedList; /** * 队列,保存将要访问的URL */ public class Queue { //使用链表实现队列 private LinkedList<Object> queue = new LinkedList<Object>(); //入队列 public void enQueue(Object t){ queue.addLast(t); } //出队列 public Object deQueue(){ return queue.removeFirst(); } //判断队列是否为空 public boolean isQueueEmpty(){ return queue.isEmpty(); } //判断队列是否包含t public boolean contains(Object t){ return queue.contains(t); } public boolean empty(){ return queue.isEmpty(); } } import java.util.*; public class LinkQueue { //已访问的URL集合 private static Set<String> visitedUrl = new HashSet<String>(); //待访问的URL集合 private static Queue unVisitedUrl = new Queue(); //获得URL队列 public static Queue getUnVisitedUrl(){ return unVisitedUrl; } //添加到访问过的URL队列中 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&&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(); } }
我觉得应该没什么问题了 可是 运行之后什么都没有
求各位大神行行好救救我把
我已经在这卡了好多天了 再这样下去要疯了