我想报告一下,我一直在研究 StormCrawler SDK 以提取 HTML 响应。我知道 JSoupParserBolt 使用 parsefilter.json 文件根据特定需要提取响应。我也知道有一个用于相同目的的默认文件。在我的例子中,我使用 Eclipse 来执行 pom.xml 文件来为设计的爬虫生成 .jar 文件。然后我运行 CrawlTopology 类,其中包含 main 函数和一个包含 SDK 中所有必需的 spout 和 bolt 引用的 run 函数,形成一个 Topology(我使用 maven archtype 下载示例爬虫)。
问题是 CrawlTopology 类没有调用修改后的 parsefilter.json 文件来引用所需的信息,而是始终使用默认的 parsefilter.json 文件。我无法弄清楚是什么导致了这种问题。无论是 Maven 依赖问题还是默认项目的问题。
谁能帮我吗?
问问题
61 次
1 回答
0
如果您的代码是从原型生成的,那么 parsefilter.json 应该在正确的位置,即src/main/resources/。
使用 Eclipse 时,请确保将项目作为 Maven 项目导入。这会将src/main/resources/添加到类路径中。Eclipse 将获取依赖项并管理类等...我经常在 Eclipse 中运行拓扑,没有任何问题。
这对于测试和调试来说很好,但最好的方法是按照自述文件中的说明在 Eclipse 之外运行代码。另一种选择,如果你还没有安装 Storm 是使用
mvn clean compile exec:java -Dexec.mainClass=insert.package.CrawlTopology -Dexec.args="-conf crawler-conf.yaml -local"
在 Eclipse 之外以本地模式运行它。
于 2018-03-20T09:14:57.667 回答