首页 > 代码库 > 用Java写的爬虫程序

用Java写的爬虫程序

这是一个web查找的根本程序,从命令行输入查找条件(开端的URL、处置url的最大数、要查找的字符串),

它就会逐一对Internet上的URL进行实时查找,查找并输出匹配查找条件的页面。 这个程序的原型来自《java编程艺术》,

为了非常好的剖析,站长去掉了其间的GUI有些,并稍作修改以适用jdk1.5。以这个程序为基础,可以写出在互联网上查找

比如图像、邮件、页面下载之类的“爬虫”。

先请看程序运转的进程: 



D:\java>javac  SearchCrawler.java(编译) 


D:\java>java   SearchCrawler http://www.ceocbs.com/ /zz3zcwbwebhome/index.jsp 20 java 


Start searching... 

result: 

searchString=java 

http://lf.yunnanw.cn/ /zz3zcwbwebhome/index.jsp 

http://www.lcsyt.com/ /zz3zcwbwebhome/reply.jsp 

http://www.minnan888.net/ /zz3zcwbwebhome/learn.jsp 


又如: 

D:\java>java    SearchCrawler http://www.  20 java 

Start searching... 

result: 

searchString=java 

http://sina.com 

http://www.vipfuxin.com/ /W/sinaCN/ina class=a2 

http://www.qclchina.com/ /W/sinaCN/na class=a8 

http://www.tongxinglong.com/ /W/sinaHK/www class=a2 

http://www.jinanwuliangye.com/ /W/sinaTW/ class=a8 



D:\java> 

下面是这个程序的源码 


import java.util.*;

import java.net.*;

import java.io.*;

import java.util.regex.*;


// 查找Web爬行者

public class SearchCrawler implements Runnable{

 

/* disallowListCache缓存robot不允许查找的URL。 Robot协议在Web站点的根目录下设置一个robots.txt文件,

  *规则站点上的哪些页面是约束查找的。 查找程序应该在查找进程中跳过这些区域,下面是robots.txt的一个比如:

 # robots.txt for http://somehost.com/

   User-agent: *

   Disallow: /cgi-bin/

   Disallow: /registration # /Disallow robots on registration page

   Disallow: /login

  */



  private HashMap< String,ArrayList< String>> disallowListCache = new HashMap< String,ArrayList< String>>(); 

  ArrayList< String> errorList= new ArrayList< String>();//错误信息 

  ArrayList< String> result=new ArrayList< String>(); //查找到的结果 

  String startUrl;//开端查找的起点

  int maxUrl;//最大处置的url数

  String searchString;//要查找的字符串(英文)

  boolean caseSensitive=false;//是不是区别大小写

  boolean limitHost=false;//是不是在约束的主机内查找

  

  public SearchCrawler(String startUrl,int maxUrl,String searchString){

   this.startUrl=startUrl;

   this.maxUrl=maxUrl;

   this.searchString=searchString;

  }