我正在使用nutch对一些网站进行爬网(作为一个独立于其他内容运行的进程),同时我想使用java(scala)程序使用jsoup分析网站的html数据。
我让nutch按照教程工作(没有脚本,只执行单独的指令工作),我认为这是在保存网站的html文件 crawl/segments/<time>/content/part-00000
目录。
问题是,我不知道如何在java/scala程序中实际读取网站数据(url和html)。我读了这个文档,但发现它有点压倒性,因为我从来没有使用过hadoop。
我试图使示例代码适应我的环境,这就是我得到的结果(主要是猜测):
val reader = new MapFile.Reader(FileSystem.getLocal(new Configuration()), ".../apache-nutch-1.8/crawl/segments/20140711115438/content/part-00000", new Configuration())
var key = null
var value = null
reader.next(key, value) // test for a single value
println(key)
println(value)
但是,我在运行时遇到了以下异常:
Exception in thread "main" java.lang.NullPointerException
at org.apache.hadoop.io.SequenceFile$Reader.next(SequenceFile.java:1873)
at org.apache.hadoop.io.MapFile$Reader.next(MapFile.java:517)
我不知道如何与一个 MapFile.Reader
,特别是我应该传递给它的构造函数参数。我应该传递什么配置对象?这是正确的文件系统吗?那是我感兴趣的数据文件吗?
1条答案
按热度按时间fjnneemd1#
斯卡拉:
java 语:
或者,您可以使用
org.apache.nutch.segment.SegmentReader
(示例)。