ISpiderReportable接口的实现

原创 2008年10月01日 16:46:00

 ISpiderReportable就是当Spider程序发现链接时,完成对数据的处理,报告了Spider的发现。

共有如下几个方法:


      public boolean foundInternalLink(String url);

   public boolean foundExternalLink(String url);

   public boolean foundOtherLink(String url);

   public void processPage(HTTP page);

   public void completePage(HTTP page,boolean error);

   public boolean getRemoveQuery();  //自我感觉这个比较重要,细看!

   public void spiderComplete();

 

具体实现代码如下:

  1. package com.heaton.bot;
  2. /**
  3.  * This interface represents a class that
  4.  * the spider can report to(代理). As the spider
  5.  * does its job, events from this interface
  6.  * will be called.
  7.  */
  8. public interface ISpiderReportable {
  9.   /**
  10.    * Called when the spider finds an internal
  11.    * link. An internal link shares the same
  12.    * host address as the URL that started
  13.    * the spider.
  14.    *
  15.    * @return true - The spider should add this URL to the workload.
  16.    * 加入到管理作业中。
  17.    * false - The spider should not add this URL to the workload.
  18.    */
  19.   public boolean foundInternalLink(String url);
  20.   /**
  21.    * Called when the spider finds an external
  22.    * link. An external link does not share the
  23.    * same host address as the URL that started
  24.    * the spider.
  25.    * @return true - The spider should add this URL to the workload.
  26.    * false - The spider should not add this URL to the workload.
  27.    */
  28.   public boolean foundExternalLink(String url);
  29.   /**
  30.    * Called when the spider finds a type of
  31.    * link that does not point to another HTML
  32.    * page(for example a mailto link).
  33.    * @return true - The spider should add this URL to the workload.
  34.    * false - The spider should not add this URL to the workload.
  35.    */
  36.   public boolean foundOtherLink(String url);
  37.   /**
  38.    * Called to actually process a page. This is where the
  39.    * work actually done by the spider is usually preformed.
  40.    */
  41.   public void processPage(HTTP page);
  42.   /**
  43.    * Called to request that a page be processed.
  44.    * This page was just downloaded by the spider.
  45.    *
  46.    * @param page The page contents.
  47.    * @param error true - This page resulted in an HTTP error.
  48.    * false - This page downloaded correctly.
  49.    */
  50.   public void completePage(HTTP page,boolean error);
  51.   /**
  52.    * This method is called(唤醒,调用) by the spider to determine if
  53.    * query strings should be removed. A query string
  54.    * is the text that follows a ? on a URL. For example:
  55.    * 我的理解为:query string为id=a;pwd=b。但通过下面的解释好像
  56.    * http://www.heat-on.com/cgi-bin/login.jsp?id=a;pwd=b
  57.    * 一个整句都是query string。
  58.    * http://www.heat-on.com/cgi-bin/login.jsp?id=a;pwd=b
  59.    *
  60.    * Everything to the left of, and including, the ? is
  61.    * 一切左边的(包含'?')……
  62.    * considered part of the query string.
  63.    *
  64.    * @return true - Query string should be removed.
  65.    * false - Leave query strings as is.
  66.    */
  67.   public boolean getRemoveQuery();
  68.   /**
  69.    * Called when the spider has no more work.
  70.    */
  71.   public void spiderComplete();
  72. }

接口不能实现什么功能,在GetSite类中也没有具体的实现,只是简单地return true。那我也只能寄希望于Spider类,它是bot乃至爬虫的核心。

ISpiderReportable

import java.net.*;/** * This interface specifies a class that can  * accept information from a spide...
  • renbaoyong
  • renbaoyong
  • 2007年01月22日 22:55
  • 368

接口的显式实现与隐式实现

我们在实现接口时,常常是类继承接口,然后在接口中实现相应的方法。代码如下: interface IOutput { void output(); } cl...
  • xxdddail
  • xxdddail
  • 2014年09月16日 08:33
  • 1975

C#接口的三种实现方式

public interface MyInterface { /// 下面三个方法的签名都是 /// .method public hidebysig news...
  • noetic_wxb
  • noetic_wxb
  • 2016年11月28日 20:23
  • 3798

抽象类可以只实现接口的一部分方法

一个类若只实现了接口的部分方法,那这个类就一定是一个抽象类. 反过来说,抽象类可以实现接口的部分方法或者一个方法也不实现. 例如, public interface Human { pub...
  • hhitom
  • hhitom
  • 2016年05月05日 09:42
  • 2165

Hadoop 实现Writable接口

MapReduce  里的键值对必须实现可序列化,以支持在网络中传输。 值必须实现 Writable接口,而键因为在Reduce阶段有排序任务,所以必须实现WritableComparable 接口。...
  • OOC_ZC
  • OOC_ZC
  • 2016年01月10日 22:30
  • 635

java 的接口可以实现接口吗?抽象类呢?

面试中可能会遇到这样的问题: 1.接口可以实现接口吗? ans:不可以. 2.抽象类可以实现接口吗? ans:可以...
  • jianjun4833
  • jianjun4833
  • 2017年05月15日 15:52
  • 3216

Java中为什么要用抽象类来实现接口

抽象类和接口都是java中用来实现多态的fang'fa
  • mnorst
  • mnorst
  • 2014年05月28日 18:22
  • 7064

Map接口实现类HashMap之实现原理

大家都知道,HashMap是我们平时在编程过程中经常用到的一个容器类,我们大部分的coder都只是知道其比较快,特别是在查找的时候,但是HashMap内部具体是如何实现的,如何保证这种实现能够很快的去...
  • zhangronghua309
  • zhangronghua309
  • 2013年10月11日 18:18
  • 923

类继承父类并且实现接口

//定义第一个接口 interface Valuable{ public double getmoney(); } //定义第二个接口 interface Pretectable{ public ...
  • hpuxiaofang
  • hpuxiaofang
  • 2016年11月04日 21:54
  • 1620

从头认识java-7.4 实现多重接口

这一章节我们来说一下接口另一个特性:多重接口。在平常,使用继承,我们只是继承某一类,只能够一种向上转型,但是在接口的使用方面,可以实现多个接口,然后实现多种的向上转型。 我们先上代码:package ...
  • raylee2007
  • raylee2007
  • 2015年11月08日 23:16
  • 3476
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:ISpiderReportable接口的实现
举报原因:
原因补充:

(最多只允许输入30个字)