JSpider学习笔记 ( by quqi99 )

                                                        JSpider学习笔记 ( by quqi99 )

作者:张华 发表于:2007-05-24  ( http://blog.csdn.net/quqi99 )

版权声明:可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息及本版权声明。

2.1.2 .1 JSpider 整体结构:

  JSpider 用于抓取 WEB 资源、解析内容结果、再从解析的结果中寻找新 URL ,再抓取等

  目前只支持下载 HTML ,不支持下载动态网页

 

 

事件转发流程(我们能自定义这种事件过滤链 ):

Rules 决定 Jspider 去取什么资源(定义它的行为和范围), Rules 一直执行,直到 decision 出现, decision 类型有:不关心:接受:忽略:禁止:

Plugins 是事件发生后我们采取的行动,这些行动可以是:写一个报告文件、在控制台上显示消息、写资源到磁盘、发邮件等。

Events filter 能选择哪些事件被哪些 Plugis 处理。

API 包括:

对象模型(站点、 URL 、内容、资源中的参考、 Cookies 等);

事件系统:

   Engine 事件 ( 引擎开始、结束、配置、选择 )

   Spdering 事件(站点发现、资源抓取、取资源错误)

   Monitoring 事件(给信息关于进程与线程中断)

  JSpiderEvent 类中有定义:

    public static final int EVENT_TYPE_ENGINE = 1;

    public static final int EVENT_TYPE_MONITORING = 2;

    public static final int EVENT_TYPE_SPIDER = 3;

  

2.1.2 .2 相关类

事件相关:

 

Model 类图:

Site 对象的状态 ( 依赖于文件 robots.txt)

   STATE_DISCOVERED

   STATE_ROBOTSTXT_HANDLED

   STATE_ROBOTSTXT_ERROR

   STATE_ROBOTSTXT_UNEXISTING

   STATE_ROBOTSTXT_SKIPPED

Resource 的状态

   Discovered

   Fetch_Ignored

   Fetch_Error

   Fetch_Forbidden

   Fetched

   Parse_Ignored

   Parse_Error

   Parse

2.1.2 .3 配置

   配置分三个级别:

   公共 (common) 级别:如日志配置。在蜘蛛的 common 目录下

   蜘蛛 (generally) 级别:适用于所有站点

   站点 (per-site) 级别:每个站点定制

 

公共级别。日志配置:

   日志信息不记录事件信息,事件信息被转发到事件系统中(插件可选择将事件信息也输入日志)

日志支持 Log4j JDK1.4 loggin (javax.util.loggin)

为了区别日志输出与插件输出,可以将日志系统关掉。即在 jspider.properies file jspider.log.provider 改为: net.javacodeing.jspider.core.logging.impl.DevNullLogProvider

(直接将日志信息输往控制台

jspider.log.provider=net.javacodeing.jspider.core.logging.impl.SystemOutLogProvider

   Log4j 日志系统时配置 log4j.xml 文件

   JDK1.4 的日志时配置 loggin.properties 文件。 ( 直接将 Log4j.jar 包移即用这个 )

 

蜘蛛级别(jspider.properties):

   用代理,但验证未通过时,会返回 407 错误( FORBIDDEN )。

   有两组线程池( Spider )与 (Thinkers) 。一个 thinker 线程能保持几个 spider 线程,默认是 1 5

  用户代理配置 ( Jspider 往外发的每一个 HTTP 请求能改变,用户代理也被用于去决定从一个站点的 robots.txt 的什么规则去应用,改变用户代理也改变 obeyed rules

 

规则:

  Net.javacodeing.jspider.mod.rule.OnlyHttpProtocolRule 。只抓以 http:// 开头的 URL

TextHtmlMimeTypeOnlyRule 只抓取 mime type 里包含 "text/html" URL

AccepAllRule 接受所有 URLS

BaseSiteOnlyRule 仅仅 URL base site 的一部分才接受 . (即只比较 URL host 部分)

BoundedDepthRule URL 的深度要满足。有两个参数( depth.min depth.max

OnlyDeeperInSiteRule 仅仅接受在同一站点中但是比 base url 深度要深的 URL

ExternallyReferencedOnlyRule 仅仅接受被其他站点的资源引用的 URL

InternallyReferencedOnlyRule 仅仅接受被相同站点的资源引用的 URL

ForbiddenPathRule 不充许被接受的路径,只和 robots.txt 中同,参数( path

MaxNumberOfURLParamsRuls 设置接收 URL 的最大个数,参数 (max)

  MaxResourcesPerSiteRule 为每个站点设置接收 URL 的最大个数,参数 (max)

  NoURLParamsRule 仅仅接受没有参数的 URL ,即 ”?name=quqi “之类

  RejectAllRule 拒绝所有的规则

 

站点级配置(per-site)

   对一个站台的一部分限制访问的配置:

   site.rules.spider.count=1 

site.rules.spider.1.class= net.javacoding.jspider.mod.rule.ForbiddenPathRule 

site.rules.spider.1.config.path=/apidocs 

robots.txt 文件:任何 web 服务器上如果放有 robots.txt 文件,那么 JSpider 会去遵守 robots.txt 所定的访问权限。如果有 robots.txt 文件但是是取 robots.txt 文件失败那么这个站点上的文件均被忽略。

扼杀 (throtting) :用来防止web 服务器崩溃 , ,而去设置 Jspider 多经常什么时候去发送请求。 Throtting 控制线程,如果必要阻塞它们直到他们被充许去做下一个请求。即控制上一个请求与发出下一个请求之时的时间隔。

设置 Cokees : 设置它的一个最大目的可能是可在一个 session 中做完任务,不用每次都去建立连接。

规则 Rools : 想看这些可在 velocity-dump.out 文件中看。

 

插件配置( Plugin.properties:插件是对事件的 action ,是我们着重感兴趣的地方。它接收事件通知,访问 model 完成相关行动。

   默认插件类型:

   Console: 往控制台上打信息

   Velocity: 通过客户化模板写报告文件

   FileWriter: 写信息到文件系统中

   StatusBasedFileWriter: ( 根据 URL 状态写文件, 200.out 是所有良好的资源, 404.out 是错误的资源, 301.out 是所有转发的资源等 )

  DiskWriter: 每抓取下来一个文件就往文件系统中写,写资源内容,用于下载资源)

 

你可能感兴趣的:(Search,Engine)