快速业务通道

用Java编程实现“网络蜘蛛” - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-24
r.begin(); Runnable doLater = new Runnable() { public void run() { begin.setText("Begin"); } }; SwingUtilities.invokeLater(doLater); backgroundThread=null; } catch ( MalformedURLException e ) { UpdateErrors err = new UpdateErrors(); err.msg = "错误地址。"; SwingUtilities.invokeLater(err); } } /** *当找到某一URL时由蜘蛛调用,在此验证链接。 * *参数base是找到链接时的页面 *参数url是链接地址 */ public boolean spiderFoundURL(URL base,URL url) { UpdateCurrentStats cs = new UpdateCurrentStats(); cs.msg = url.toString(); SwingUtilities.invokeLater(cs); if ( !checkLink(url) ) { UpdateErrors err = new UpdateErrors(); err.msg = url+"(on page " + base + ")\n"; SwingUtilities.invokeLater(err); badLinksCount++; return false; } goodLinksCount++; if ( !url.getHost().equalsIgnoreCase(base.getHost()) ) return false; else return true; } /** *当发现URL错误时调用 * *参数url是导致错误的URL */ public void spiderURLError(URL url) { } /** *由内部调用检查链接是否有效 * *参数url是被检查的链接 *返回True表示链接正常有效 */ protected boolean checkLink(URL url) { try { URLConnection connection = url.openConnection(); connection.connect(); return true; } catch ( IOException e ) { return false; } } /** *当蜘蛛找到电子邮件地址时调用 * *参数email为找到的电子邮件地址 */ public void spiderFoundEMail(String email) { } /** *以线程安全方式更新错误信息的内部类 */ class UpdateErrors implements Runnable { public String msg; public void run() { errors.append(msg); } } /** *以线程安全方式更新当前状态信息 */ class UpdateCurrentStats implements Runnable { public String msg; public void run() { current.setText("当前进度:" + msg ); goodLinksLabel.setText("正常链接:" + goodLinksCount); badLinksLabel.setText("死链接:" + badLinksCount); } } }

用Java编程实现“网络蜘蛛”(4)

时间:2010-04-27 csdn villa123

例2:报告蜘蛛事件(ISpiderReportable.java)

import java.net.*; interface ISpiderReportable { public boolean spiderFoundURL(URL base,URL url); public void spiderURLError(URL url); public void spiderFoundEMail(String email); }

例3:可复用的蜘蛛类(Spider.java)

import java.util.*; import java.net.*; import java.io.*; import javax.swing.text.*; import javax.swing.text.html.*; public class Spider { /** *导致错误的URL集合 */ protected Collection workloadError = new ArrayList(3); /** *等待区URL集合 */ protected Collection workloadWaiting = new ArrayList(3); /** *处理过的URL集合 */ protected Collection workloadProcessed = new ArrayList(3); protected ISpiderReportable report; /** *表明处理过程是否应取消的标志 */ protected boolean cancel = false; /** *构造函数 * *参数report为实现了ISpiderReportable接口的类 */ public Spider(ISpiderReportable report) { this.report = report; } /** *获取导致错误的URL */ public Collection getWorkloadError() { return workloadError; } /** *获取在等待的URL *应添加至少一个URL到此集合以启动蜘蛛 */ public Collection getWorkloadWaiting() { return workloadWaiting; } /** *获取被处理过的URL */ public Colle

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号