电话:0731-83595998
导航

利用JAVA编写的Web搜索程序

来源: 2017-12-23 14:35

 百度广告

这是一个web搜索的基本程序,从命令行输入搜索条件(起始的URL、处理url的最大数、要搜索的字符串),它就会逐个对Internet上的URL进行实时搜索,查找并输出匹配搜索条件的页面。

 

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

D:"java>java SearchCrawler http://127.0.0.1:8080/zz3zcwbwebhome/index.jsp 20 java 
result: 
http://127.0.0.1:8080/zz3zcwbwebhome/index.jsp 
http://127.0.0.1:8080/zz3zcwbwebhome/learn.jsp 
http://127.0.0.1:8080/zz3zcwbwebhome/article.jsp 
http://127.0.0.1:8080/zz3zcwbwebhome/myexample/Proxooldoc/index.html 
http://127.0.0.1:8080/zz3zcwbwebhome/view.jsp?id=297 
http://127.0.0.1:8080/zz3zcwbwebhome/view.jsp?id=286 
http://127.0.0.1:8080/zz3zcwbwebhome/view.jsp?id=284 
http://127.0.0.1:8080/zz3zcwbwebhome/view.jsp?id=272

又如: 
java SearchCrawler http:// 20 java 
result: 
http://sina.com 
http://redirect.sina.com/WWW/sinaCN/ class=a8 
http://redirect.sina.com/WWW/sinaTW/.tw class=a8 
http://redirect.sina.com/WWW/smsCN/sms.sina.com.cn/ class=a2 
http://redirect.sina.com/WWW/sinaNet/www.sina.net/ class=a3


 

|||

下面是这个程序的源码 

 

import java.util.*; 
import java.io.*; 
// 搜索Web爬行者 

/* 缓存robot不允许搜索的URL。 Robot协议在Web站点的根目录下设置一个robots.txt文件,规定站点上的哪些页面是限制搜索的。*/

private HashMap disallowListCache = new HashMap(); 
ArrayList result=new ArrayList(); //搜索到的结果 
int maxUrl;//最大处理的url数 
boolean caseSensitive=false;//是否区分大小写 

public SearchCrawler(String startUrl,int maxUrl,String searchString){ 
this.maxUrl=maxUrl; 
}

public ArrayList getResult(){ 
}

public void run(){//启动搜索线程

crawl(startUrl,maxUrl, searchString,limitHost,caseSensitive); 


private URL verifyUrl(String url) { 
if (!url.toLowerCase().startsWith("http://")) 

URL verifiedUrl = null; 
verifiedUrl = new URL(url); 
return null; 

return verifiedUrl; 

// 检测robot是否允许访问给出的URL. 
String host = urlToCheck.getHost().toLowerCase();//获取给出RUL的主机

// 获取主机不允许搜索的URL缓存 

// 如果还没有缓存,下载并缓存。 
disallowList = new ArrayList(); 
URL robotsFileUrl =new URL("http://" + host + "/robots.txt"); 

// 读robot文件,创建不允许访问的路径列表。 
while ((line = reader.readLine()) != null) { 
String disallowPath =line.substring("Disallow:".length());//获取不允许访问路径

// 检查是否有注释。 
if (commentIndex != - 1) { 
}

disallowPath = disallowPath.trim(); 

// 缓存此主机不允许访问的路径。 
} catch (Exception e) { 


for (int i = 0; i < disallowList.size(); i++) { 
if (file.startsWith(disallow)) { 

return true; 


try { 
BufferedReader reader = 

// Read page into buffer. 
StringBuffer pageBuffer = new StringBuffer(); 
pageBuffer.append(line); 

return pageBuffer.toString(); 
}

return null; 

// 从URL中去掉"www" 
int index = url.indexOf("://www."); 
return url.substring(0, index + 3) + 
}

return (url); 

// 解析页面并找出链接 
boolean limitHost) 
// 用正则表达式编译链接的匹配模式。 
Matcher m = p.matcher(pageContents);


while (m.find()) { 

if (link.length() < 1) { 
}

// 跳过链到本页面内链接。 
continue; 


continue; 

if (link.toLowerCase().indexOf("javascript") != -1) { 
}

if (link.indexOf("://") == -1){ 
link = "http://" + pageUrl.getHost()+":"+pageUrl.getPort()+ link; 
String file = pageUrl.getFile(); 
link = "http://" + pageUrl.getHost()+":"+pageUrl.getPort() + "/" + link; 
String path =file.substring(0, file.lastIndexOf('/') + 1); 

}

int index = link.indexOf('#'); 
link = link.substring(0, index); 

link = removeWwwFromUrl(link);

URL verifiedLink = verifyUrl(link); 
continue; 

/* 如果限定主机,排除那些不合条件的URL*/ 
!pageUrl.getHost().toLowerCase().equals( 

}

// 跳过那些已经处理的链接. 
continue; 

linkList.add(link); 

return (linkList); 

// 搜索下载Web页面的内容,判断在该页面内有没有指定的搜索字符串

private boolean searchStringMatches(String pageContents, String searchString, boolean caseSensitive){ 
if (!caseSensitive) {//如果不区分大小写 
}


String terms = p.split(searchString); 
if (caseSensitive) { 
return false; 
} else { 
return false; 
}

}

return true; 

编辑推荐:

下载Word文档

温馨提示:因考试政策、内容不断变化与调整,长理培训网站提供的以上信息仅供参考,如有异议,请考生以权威部门公布的内容为准! (责任编辑:长理培训)

网络课程 新人注册送三重礼

已有 22658 名学员学习以下课程通过考试

网友评论(共0条评论)

请自觉遵守互联网相关政策法规,评论内容只代表网友观点!

最新评论

点击加载更多评论>>

精品课程

更多
10781人学习

免费试听更多

相关推荐
图书更多+
  • 电网书籍
  • 财会书籍
  • 其它工学书籍
拼团课程更多+
  • 电气拼团课程
  • 财会拼团课程
  • 其它工学拼团
热门排行

长理培训客户端 资讯,试题,视频一手掌握

去 App Store 免费下载 iOS 客户端