【发布时间】:2019-12-12 06:18:27
【问题描述】:
我正在尝试在 Nutch 中启用 Tika 的 BoilerpipeContentHandler 解析器以从网页中提取文章文本。为此,我已将 tika-config.xml 配置为排除 HTMLParser 并激活 BoilerpipeContentHandler 解析器,如下所示:
<properties>
<service-loader initializableProblemHandler="ignore" loadErrorHandler="WARN" />
<parsers>
<parser class="org.apache.tika.parser.DefaultParser">
<mime-exclude>text/html</mime-exclude>
<parser-exclude class="org.apache.tika.parser.html.HtmlParser"/>
</parser>
<!-- Use a different parser for text/html -->
<parser class="org.apache.tika.parser.html.BoilerpipeContentHandler">
<mime>text/html</mime>
</parser>
</parsers>
</properties>
当我通过运行命令测试此配置时:
bin/nutch org.apache.nutch.parse.ParserChecker
输出包括:
Dec 12, 2019 5:11:40 PM org.apache.tika.config.LoadErrorHandler$2 handleLoadError
WARNING: Unable to load org.apache.tika.parser.DefaultParser
java.lang.ClassNotFoundException: org.apache.tika.parser.html.HtmlParser
at java.net.URLClassLoader.findClass(URLClassLoader.java:382)
at java.lang.ClassLoader.loadClass(ClassLoader.java:418)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:355)
at java.lang.ClassLoader.loadClass(ClassLoader.java:351)
和
Dec 12, 2019 5:11:40 PM org.apache.tika.config.LoadErrorHandler$2 handleLoadError
WARNING: Unable to load org.apache.tika.parser.html.BoilerpipeContentHandler
java.lang.ClassNotFoundException: org.apache.tika.parser.html.BoilerpipeContentHandler
at java.net.URLClassLoader.findClass(URLClassLoader.java:382)
at java.lang.ClassLoader.loadClass(ClassLoader.java:418)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:355)
我的类路径设置正确,所以我不知道为什么找不到两个解析器类。我想知道 Nutch 或 Tika 是否使用了不同的类路径?或者我的 tika-config.xml 可能有明显问题。
非常感谢您的任何想法。
【问题讨论】:
-
“我的类路径设置正确,...”堆栈跟踪另有说明 ;) 建议:专注于让 Tika 工作 - 使用 any 数据文件或 任何配置:tika.apache.org/1.23/gettingstarted.html。然后一次改变一个变量,直到你让它完全在你的环境中工作,
-
还:问:您是否检查了 .jar 文件以确认 org.apache.tika.parser.html.BoilerpipeContentHandler 存在?如果是这样,哪个.jar?问:你的类路径究竟是什么IS,你是如何设置它的?请用上述所有问题的答案更新您的帖子。
-
谢谢!非常好的建议。
标签: java parsing nutch apache-tika