Nutch多格式支持技术方案

Nutch可以对多种格式的资源实现抓取,只需要做一些配置上的修改即可,下面就是一些配制方法

1、抓取 pdf|doc|xls|ppt|txt

默认情况下可以搜索txt内容,pdf|doc|xls|ppt 需要配置如下文件:

1. parse-plugins.xml: 指定文件使用的parser,默认nutch使用了第三方的tika作为parser

2. nutch-default.xml:

<name>plugin.includes</name> 默认使用tika,若单独指定,则按照如下格式:

<value>.....|parse-(text|html|js|pdf|msexcel|mspowerpoint|msword)|...

<name>http.content.limit</name> 指定从http协议读取的文件大小

<value>-1</value> -1表示无限制,不然可能会有parse incomplete exception

3. regex-urlfilter.txt ppt xls从过滤列表中去掉(pdf,doc默认不过滤)

4. crawl-urlfilter.txt ppt xls从过滤列表中去掉(pdf,doc默认不过滤)

2、解析 pdf|doc|xls|ppt|txt

用命令行执行用ant编译后的代码没有问题,问题存在于eclipse环境下。

问题原因分析:eclipse下无法区分不同jar包内相同的package下的相同class文件,而nutch下的parse-pdf插件和lib-jakarta-poi插件分别使用了两个旧版本的第三方包:PDFBox-0.74-dev.jarpoi-3.5-beta4-20081128.ar, poi-scratchpad-3.5-beta4-20081128.jar。在parse-tika插件下分别使用了pdfbox-1.1.0.jar, poi-scratchpad-3.6.jar(用于解析msoffice)poi-3.6.jar。为了让程序执行时能够调用parse-tika所引用的包,需要在build pathremove掉以上给出的三个旧的jar包。

多格式文件解析的测试方法:执行org.apache.nutch.parse.ParserCheckermain函数,参数为需要爬取和解析的文件url

3、解析流程

org.apache.nutch.parse.ParseUtil.parse(Content)方法是解析的入口函数,其流程是先根据输入文档的类型取得相应的parser,再调用该parsergetParse方法执行解析。若解析时间未设置为-1(无穷大),则调用runParser方法,通过timer来控制解析的超时。以解析msword为例,调用流程为ParseUtil.parse -> TikaParser.getParse -> OfficeParser.parse

你可能感兴趣的:(Nutch)