当前位置:首页 > 全部子站 > IT > 思科认证

利用JAVA编写的Web搜索程序

来源:长理培训发布时间:2017-12-23 14:35:08

 百度广告

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

责编:罗莉

发表评论(共0条评论)
请自觉遵守互联网相关政策法规,评论内容只代表网友观点,发表审核后显示!

国家电网校园招聘考试直播课程通关班

  • 讲师:刘萍萍 / 谢楠
  • 课时:160h
  • 价格 4580

特色双名师解密新课程高频考点,送国家电网教材讲义,助力一次通关

配套通关班送国网在线题库一套

课程专业名称
讲师
课时
查看课程

国家电网招聘考试录播视频课程

  • 讲师:崔莹莹 / 刘萍萍
  • 课时:180h
  • 价格 3580

特色解密新课程高频考点,免费学习,助力一次通关

配套全套国网视频课程免费学习

课程专业名称
讲师
课时
查看课程
在线题库
面授课程更多>>
图书商城更多>>
在线报名
  • 报考专业:
    *(必填)
  • 姓名:
    *(必填)
  • 手机号码:
    *(必填)
返回顶部