package org.apache.nutch;
import java.io.IOException;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.conf.Configured;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.DataOutputBuffer;
import org.apache.hadoop.io.SequenceFile;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.io.Writable;
import org.apache.hadoop.util.Tool;
import org.apache.hadoop.util.ToolRunner;
public class SequenceFileReader<K, V> extends Configured implements Tool{
private boolean more = true;
private K key = null;
private V value = null;
private SequenceFile.Reader in;
public boolean nextKeyValue() throws IOException, InterruptedException {
if (!more) {
return false;
}
long pos = in.getPosition();
key = (K) in.next(key);
if (key == null ) {
more = false;
key = null;
value = null;
} else {
value = (V) in.getCurrentValue(value);
}
return more;
}
public K getCurrentKey() {
return key;
}
public V getCurrentValue() {
return value;
}
@Override
public int run(String[] arg0) throws Exception {
Configuration conf = this.getConf();
in = new SequenceFile.Reader(FileSystem.get(conf),new Path(arg0[0]),conf);
DataOutputBuffer outBuf = new DataOutputBuffer();
while(this.nextKeyValue()){
System.out.println(this.getCurrentKey());
System.out.println(this.getCurrentValue());
}
return 0;
}
public static void main(String[] args) {
try{
String file = "D:/serverpkg/asd/nutch-1.3/index/segments/20110902115211/parse_text/part-00000/data";
if(null == args || args.length == 0)
args = new String[]{file};
int res = ToolRunner.run(new Configuration(), new SequenceFileReader<Text,Writable>(), args);
System.exit(res);
}catch(Exception e){
e.printStackTrace();
}
}
}
分享到:
相关推荐
8. **索引存储**:Nutch 可以将抓取的网页数据存储在各种后端,如 HDFS 或者本地文件系统,索引可以被 Elasticsearch 或者 Solr 等搜索引擎读取。 9. **爬虫调度**:Nutch 使用一个调度器(如 FairScheduler 或 ...
在这个场景中,我们关注的是如何利用 Nutch 来读取搜索结果目录的统计数据以及提取链接结构信息。 1. **readdb 命令**: `readdb` 是 Nutch 提供的一个工具,用于分析 Crawldb(爬行数据库)的内容。这个工具能够...
5. 测试:抓取包含RTF和MP3内容的网页,验证Nutch是否能正确解析和处理这些文件。 在实际操作中,可能会遇到版本兼容性问题或其他技术难题,因此在添加库时应确保与Nutch版本相匹配,并查阅官方文档或社区论坛获取...
Nutch是一个开源的网络爬虫项目,用于抓取互联网上的网页并建立索引。它集成了Lucene,实现了大规模网页的搜索引擎功能。Nutch的工作流程包括: 1. **抓取**:通过URL种子开始,不断发现新的链接并下载网页。 2. **...
在这个案例中,我们将通过修改 Nutch 的默认解析器 `HtmlParser` 来实现对腾讯微博内容的有效抓取。 ##### 3.1 增加依赖 在项目的 `ivy.xml` 文件中添加 Jsoup 依赖项: ```xml ``` 同时,在 `plugin.xml` ...
4. **字符转换**:在获取网页内容后,Nutch需要将原始字节流转换为可读的字符串,这里就需要一个正确的字符集转换过程。 针对以上问题,我们可以通过以下步骤进行修复: **步骤一:检查URL编码处理** 确保Nutch在...
**Nutch**是一个开源的Web抓取框架,它不仅能够帮助开发者抓取网络上的数据,还促进了多个重要开源项目的诞生和发展。通过Nutch项目,衍生出了几个在大数据处理领域非常著名的框架: 1. **Hadoop**:一个能够处理...
- **segread TOOL**: 这个工具用于读取Nutch生成的segment文件,展示其内容,帮助开发者理解数据结构。 - **nutch analyze db**: 分析数据库中的数据,提供有关抓取和索引的信息。 - **分词插件**: Nutch支持使用第...
Nutch是一个开源的Web爬虫框架,它能够抓取互联网上的网页并进行索引,非常适合用于大数据分析和搜索引擎的构建。本篇文章将深入探讨如何使用Java来获取Nutch中存储的网页信息。 首先,我们需要理解Nutch的工作流程...
- **从数据库中取出URL**:从crawldb数据库中读取待抓取的URL。 - **排序与筛选**:对URL进行排序,优先级高的URL会先被抓取。 - **写入抓取列表**:将排序后的URL列表写入segments目录下的文件夹中,文件夹名...
3. **Nutch插件的配置文件**:每个Nutch插件都可能有自己的配置文件,这些文件在插件被加载时自动读取。例如,过滤器(filter)插件通常有自己的配置,用于设定过滤规则。 配置文件的加载顺序决定了配置的优先级,...
6. **与Solr或Elasticsearch集成**:Nutch抓取的网页数据可以导入到Solr或Elasticsearch中,提供更高级的搜索功能和界面。 在《Lucene+nutch开发自己的搜索引擎 part2》中,作者通过实例详细讲解了如何使用Lucene...
Nutch是一个开源的网络爬虫项目,用于抓取网页并构建索引。在描述中提到,MP3文件信息解析可以与Nutch结合,这可能是为了在爬取网页时识别和处理MP3链接,提取音频文件的元数据,从而丰富索引内容。Nutch的`parse-...
Nutch 1.5 是一个基于Java开发的开源搜索引擎项目,它主要负责网络抓取、索引和搜索等功能。这个源代码包包含了实现这些功能的所有模块和组件,为开发者提供了深入理解搜索引擎工作原理以及定制化搜索引擎的机会。接...
本教程将主要介绍 Nutch 1.x,并部分涉及 Nutch 2.x 的相关内容。 #### 四、在 Eclipse 中导入 Nutch **安装环境**:Nutch 主要在 Linux 系统下运行。如果在 Windows 系统中想要运行 Nutch,则可以通过安装 Cygwin...
其中,解析器(Parser)是Nutch的重要组成部分之一,负责从抓取到的网页中抽取有价值的信息。本文将深入探讨Nutch解析器中`parse`方法的具体实现,通过代码笔记的形式,剖析其关键逻辑及设计思想。 #### 二、`...