Heritrix中的SURT和SurtPrefixedDecideRule

在Heritrix中,如果我们需要抓取指定host的网页,需要用到SurtPrefixedDecideRule这个规则。 

这里根据Heritrix的文档,解释一下SURT。 

SURT全称是Sort-friendly URI Reordering Transform。 

目的是将一个URL转换成更方便的格式进行处理。 

.... 

SURT类可以将下面这种形式的URL: 

scheme://userinfo@domain.tld:port/path?query#fragment 

转换成: 

scheme://(tld,domain,:port@userinfo)/path?query#fragment 

转换后的格式就称为SURT格式。例如,http://www.baidu.com的SURT格式是http://(com,baidu,www,) 

这里()中的内容就是转换的内容。 

同时,为了不引起URL的冲突,将"."改成了","。 

这样做可以方便处理。 

因为,原始的URL的host的层次与人们的常规思维相反。 

例如,http://www.ccer.pku.edu.cn。"www","ccer","pku","edu","cn"的范围是从小到大的关系。 

而变成SURT格式后是,http://(cn,edu,pku,ccer,www,),范围从大到小。 

这样可以帮助我们对URL排序,将同一个范围内的URL聚集到一起(通常只需要对SURT格式的字符串进行比较就可以了)。 

最后一个注意点,由于URL的大小写影响不大,所以SURT默认将 所有字母全部转换成小写。 

SurtPrefixedDecideRule就是用来判断一个URL的SURT格式是否以某个前缀开头(这些前缀一般是由种子产生的,也可以自己指定前缀的文件)。 

SurtPrefixedDecideRule首先根据来源生成一个保存SURT的Set。 

然后对每个爬取的URL,先转换成SURT格式,判断是否以Set中的某个SURT开头,根据结果做出accept,pass或reject。 

感兴趣的可以自己看看源代码。 

(为什么不能发图??) 

这里有几个设置属性,默认情况下是从seed直接生成用来判断前缀的Set。 

decision: accept或reject,如果不明白的话得了解一下DecideRule的机制。 

surts-source-file: 可以指定生成surt Set的URL来源。 

seeds-as-surt-prefixes: 是否把种子中的URL作为surt的Set。 

surts-dump-file:将用来比较的SURT dump到文件中,主要是调试的时候看一下是否有错误。 

also-check-via:是否检查URL的来源。默认为false。 

例如。http://blog.csdn.net/是从http://www.csdn.net/上面链接过来的, 

就说http://www.csdn.net/是http://blog.csdn.net/的via,就是这里提到的“来源”的意思。 

即,如果为true,那么在检查http://blog.csdn.net/的时候,还要检查从http://www.csdn.net/。 

rebuild-on-reconfig:在重新配置的时候是否重新生成set。 

举几个例子: 

假设我们的decision是accept。 

1.如果只指定了http://www.foo.org/,那么将会accept所有http://www.foo.org/的URL。但是对于http://foo.org/的页面将会pass。 

2.如果指定了http://www.foo.org/和http://foo.org/,那么将会accept所有http://www.foo.org/和http://foo.org/的URL。 

3.如果指定了http://foo.org(注意这里没有斜杠,有什么区别大家仔细想一下),那么将会accept所有http://foo.org/和foo.org下的子域名的URL(如,http://www.foo.org/和http://ex.foo.org/)。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值