问题导读
1.在Nutch的conf目录中默认有哪些文件起作用?
2.Nutch的conf目录中文件各自的作用是什么?
3.Nutch的过滤器原理的是什么?
扩展:
4.文件如何配置过滤作用,比如定义了不抓取后缀为gif、exe的文件等?
在Nutch的conf目录中有automaton-urlfilter.txt、regex-urlfilter.txt、suffix-urlfilter.txt、prefix-urlfilter.txt、domain-urlfilter.txt几个文件用于实现过滤抓取数据,比如不抓取后缀为gif、exe的文件等,通过修改其中的值可以达到只抓取感兴趣的内容的目的,在一定程度上也有助于提高抓取速度。
在抓取过程中,这几个文件不是都起作用的,默认情况下只有regex-urlfilter.txt会达到过滤目的,这一点可以从Nutch-default.xml确认。在进行过滤规则的修改之前,先说明Nutch的过滤器原理。在Nutch中,过滤器是通过插件的方式实现的,插件在nutch-default.xml中定义,具体如下:
- <!-- plugin properties -->
- <property>
- <name>plugin.folders</name>
- <value>plugins</value>
- </property>
- <property>
- <name>plugin.auto-activation</name>
- <value>true</value>
- </property>
- <property>
- <name>plugin.includes</name>
- <value>protocol-http|urlfilter-regex|parse-(html|tika)|index-(basic|anchor)|urlnormalizer-(pass|regex|basic)|scoring-opic</value>
- </property>
- <property>
- <name>plugin.excludes</name>
- <value></value>
- </property>
复制代码
其中plugin.folders定义了插件放置的位置,该值可以为绝对路径或者相对路径,若为相对路径则会在classpath中搜索,默认值为plugins,编译后的Nutch,会包含该文件夹。plugin.includes以正则表达式的方式定义了哪些插件将被包含在Nutch中,可以根据属性值查看plugins中的目录来确定默认值,比如urlfilter-regex,则说明默认情况下,过滤器插件使用的是urlfilter-regex,也即regex-urlfilter.txt文件。plugin.excludes属性以正则表达式的方式定义了哪些插件将被排除在Nutch之外定义了。
在了解了插件的定义后,具体看看过滤器分几种以及如何定义的。过滤器在nutch-default.xml中的定义如下:
- <!-- urlfilter plugin properties -->
- <property>
- <name>urlfilter.domain.file</name>
- <value>domain-urlfilter.txt</value>
- </property>
- <property>
- <name>urlfilter.regex.file</name>
- <value>regex-urlfilter.txt</value>
- </property>
- <property>
- <name>urlfilter.automaton.file</name>
- <value>automaton-urlfilter.txt</value>
- </property>
- <property>
- <name>urlfilter.prefix.file</name>
- <value>prefix-urlfilter.txt</value>
- </property>
- <property>
- <name>urlfilter.suffix.file</name>
- <value>suffix-urlfilter.txt</value>
- </property>
- <property>
- <name>urlfilter.order</name>
- <value></value>
- </property>
复制代码
通过上面的代码可知,过滤器可以分为5种,分别为:DomainURLFilter、RegexURLFilter、AutomatonURLFilter 、PrefixURLFilter、SuffixURLFilter,这5中过滤器的配置过滤规则的文件分别为:domain-urlfilter.txt、regex-urlfilter.txt、automaton-urlfilter.txt、prefix-urlfilter.txt、suffix-urlfilter.txt。属性urlfilter.order则定义了过滤器的应用顺序,所有过滤器都是与的关系。
了解了Nutch中是如何定义过滤器之后,再来看看具体的过滤规则文件,以regex-urlfilter.txt(默认情况下即按照该文件中的规则抓取数据)为例。该文件中定义的规则如下:
- # skip file: ftp: and mailto: urls
- -^(file|ftp|mailto):
-
- # skip image and other suffixes we can't yet parse
- # for a more extensive coverage use the urlfilter-suffix plugin
- -\.(gif|GIF|jpg|JPG|png|PNG|ico|ICO|css|CSS|sit|SIT|eps|EPS|wmf|WMF|zip|ZIP|ppt|PPT|mpg|MPG|xls|XLS|gz|GZ|rpm|RPM|tgz|TGZ|mov|MOV|exe|EXE|jpeg|JPEG|bmp|BMP|js|JS)$
-
- # skip URLs containing certain characters as probable queries, etc.
- -[?*!@=]
-
- # skip URLs with slash-delimited segment that repeats 3+ times, to break loops
- -.*(/[^/]+)/[^/]+\1/[^/]+\1/
-
- # accept anything else
- +.
复制代码
其中#表示注释内容,-表示忽略,+表示包含。若待抓取的url匹配该文件中的一个模式,则根据该模式前面的加号或者减号来判断该url是否抓取或者忽略,若url跟该文件中定义的规则都不匹配,则忽略该url。
相关文章推荐
Nutch-2.2.1系列之一Nutch简介||及jar包问题解决
http://www.aboutyun.com/thread-10048-1-1.html
Nutch-2.2.1系列之二编译部署Nutch及常见问题
http://www.aboutyun.com/thread-10049-1-1.html
Nutch-2.2.1系列之三Nutch配置文件||Nutch与Hbase结合使用时常见问题
http://www.aboutyun.com/thread-10050-1-1.html
Nutch-2.2.1系列之四Nutch抓取数据在HBase中的存储
http://www.aboutyun.com/thread-10051-1-1.html
Nutch-2.2.1学习之五以伪分布模式运行Nutch
http://www.aboutyun.com/thread-10078-1-1.html
Nutch-2.2.1系列之六Nutch与Solr的集成
http://www.aboutyun.com/thread-10079-1-1.html
Nutch-2.2.1系列之八Nutch过滤URL实践
http://www.aboutyun.com/thread-10081-1-1.html
|