这是一个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;
}