`

如何读取nutch抓取数据

 
阅读更多

如何读取nutch抓取数据

1.首先nutch的配置已经在博客里面写好了,如果还不知道,建议现看下,然后再读这篇文章。
2.用一个SequenceFile.Reader来读取排序的输入。SequenceFile.Reader m_reader = m_reader = new SequenceFile.Reader(fs, content, conf);
3.用NutchConfiguration.create()实例化一个Configuration的对象conf。
  Configuration conf = NutchConfiguration.create();
  //实例化一个path的路径,"path"是我们通过读取配置文件(conf.properties)获取的路径
  Path content = new Path(path + "/data");
  //通过这个路径就可有得到文件所在的位置。
  FileSystem fs = content.getFileSystem(conf);
4.下面看下完整的代码
public class ContentReader
{
    private SequenceFile.Reader m_reader = null;
   
    public ContentReader(String path) throws Exception
    {
        Configuration conf = NutchConfiguration.create();
        Path content = new Path(path + "/data");
        FileSystem fs = content.getFileSystem(conf);
        m_reader = new SequenceFile.Reader(fs, content, conf);
    }

    public boolean next(Content content) throws Exception
    {
        Text key = new Text();
        boolean ret = m_reader.next(key, content);

        if (!ret)
        {
            m_reader.close();
        }
        return ret;
    }
}
5.通过读取配置文件获取HDFS的路径
(1):我们获取的nutch所产生的路径是:/home/user/xipei/nutch1.0/crawl/segments/20091215145839/content/data.
      这里面有一些属性比如version、url、content等,有兴趣的朋友可以看下它的源代码。
(2):20091215145839 : 这是nutch在抓取时候所产生的14位的时间。当然我们完全可有只通过读./segements/。就可以读取到下面所有的14位时间的文件夹。下面来看程序:
    /**
     * According to the path of a path to obtain hdfs
     * @param prefixPath
     * @return
     */
    public static List<String> getHdfsPath(String prefixPath) {
        List<String> hdfsPaths = new ArrayList<String>();
        Path path = new Path(prefixPath);
        Configuration conf = NutchConfiguration.create();
        JobConf job = new JobConf(conf);
        try {
        FileSystem fs = FileSystem.get(job);
        FileStatus[] fileStatus = fs.listStatus(path);
        String suffixPath = "content"+File.separator+"part-00000";
        if (fileStatus == null) return null;
        for (int i = 0; i < fileStatus.length; i++) {
            hdfsPaths.add(prefixPath + File.separator + fileStatus[i].getPath().getName() + File.separator + suffixPath);
        }       
       
        } catch(Exception e) {
            e.printStackTrace();
        }
        return hdfsPaths;
    }
     注意:  这个方法的 prefixPath : 就是上面所写的那个路径。只要传递正确就可有循环获取到。
(3):简单看下怎么读取里面的url就可以了,其它的类似。
    /**
     * get list<String>
     * @param hdfsPath
     * @return
     */
    public static List<String> getUrl(String hdfsPath) {
        List<String> urls = new ArrayList<String>();
        try {
            reader = new ContentReader(hdfsPath);
            Content content = new Content();
            while(reader.next(content)) {
                String url = content.getUrl() != null ? content.getUrl() : "";
                urls.add(url);
            }           
        } catch (Exception e) {
            e.printStackTrace();
        }
       
        return urls;
    }   

分享到:
评论
2 楼 langxiashahai 2010-07-09  
lz,貌似不行哦,提供一份正确的代码吧
1 楼 comsci 2009-12-26  
一直都在关注NUTCH,很高兴楼主分享那么多经验

相关推荐

    Nutch 读取搜索结果目录统计数据、提取链接结构信息

    在这个场景中,我们关注的是如何利用 Nutch 来读取搜索结果目录的统计数据以及提取链接结构信息。 1. **readdb 命令**: `readdb` 是 Nutch 提供的一个工具,用于分析 Crawldb(爬行数据库)的内容。这个工具能够...

    nutch crawl代码解析

    Apache Nutch 是一个流行的开源网络爬虫项目,用于抓取和索引互联网上的网页。在深入理解 Nutch 的工作原理之前,了解其源码是至关重要的。本文将解析 Nutch-0.9 版本中的 `Crawl` 类,它是 Nutch 抓取流程的起点。 ...

    Nutch1.7二次开发培训讲义 之 腾讯微博抓取分析

    Nutch 是一个开源的网络爬虫项目,它提供了灵活的数据抓取能力,并支持二次开发定制功能。本篇培训讲义主要针对的是如何使用 Nutch 1.7 版本对腾讯微博进行抓取分析,特别强调了针对动态网页的抓取及自定义解析插件...

    Nutch使用总结 信息检索 建立索引 搜索引擎

    - **Segments 数据的读取**: Segment是Nutch存储抓取数据的基本单元,包含每个网页的原始数据、元数据以及索引信息。 - **FetchedSegments 类**: 提供了访问和分析Segment中已抓取网页数据的功能,包括HTTP响应状态...

    nutch部分网页乱码BUG修正

    Nutch是Apache开发的一款开源网络爬虫项目,用于抓取互联网上的网页并建立索引,以便于搜索引擎进行数据处理。然而,在实际使用过程中,由于编码问题,Nutch可能会出现部分网页乱码的情况。本篇文章将深入探讨这个...

    apache-nutch-2.3.1-src.tar.gz

    8. **索引存储**:Nutch 可以将抓取的网页数据存储在各种后端,如 HDFS 或者本地文件系统,索引可以被 Elasticsearch 或者 Solr 等搜索引擎读取。 9. **爬虫调度**:Nutch 使用一个调度器(如 FairScheduler 或 ...

    Nutch相关框架视频教程 讲义 杨尚川

    **Nutch**是一个开源的Web抓取框架,它不仅能够帮助开发者抓取网络上的数据,还促进了多个重要开源项目的诞生和发展。通过Nutch项目,衍生出了几个在大数据处理领域非常著名的框架: 1. **Hadoop**:一个能够处理...

    如何通过java程序获得Nutch中网页的详细信息

    Nutch是一个开源的Web爬虫框架,它能够抓取互联网上的网页并进行索引,非常适合用于大数据分析和搜索引擎的构建。本篇文章将深入探讨如何使用Java来获取Nutch中存储的网页信息。 首先,我们需要理解Nutch的工作流程...

    nutch缺失的两个jar组件

    Nutch是一个广泛使用的Web爬虫,它能够抓取网页并进行索引,以便于后续的搜索和分析。为了使Nutch能够处理RTF和MP3这样的非HTML内容,我们需要集成特定的库来解析这些格式。 首先,让我们深入了解一下RTF库。RTF是...

    mp3文件信息解析-nutch使用

    Nutch是一个开源的网络爬虫项目,用于抓取网页并构建索引。在描述中提到,MP3文件信息解析可以与Nutch结合,这可能是为了在爬取网页时识别和处理MP3链接,提取音频文件的元数据,从而丰富索引内容。Nutch的`parse-...

    nutch 1.5的源代码

    6. **段(Segment)**:Nutch将抓取的网页数据分段存储,每个段是一个独立的、可索引的数据单元。`SegmentReader`和`SegmentWriter`分别用于读写段数据。 7. **链接库(LinkDB)**:Nutch维护了一个链接数据库,...

    Lucene+nutch开发自己的搜索引擎 part2

    6. **与Solr或Elasticsearch集成**:Nutch抓取的网页数据可以导入到Solr或Elasticsearch中,提供更高级的搜索功能和界面。 在《Lucene+nutch开发自己的搜索引擎 part2》中,作者通过实例详细讲解了如何使用Lucene...

    Nutch 解析器parse部分代码笔记

    ### Nutch解析器parse部分代码解析 #### 一、引言 ...对于开发者而言,掌握Nutch解析器的核心逻辑是非常有帮助的,它能够帮助我们在实际项目中更加灵活地运用这一工具,提高数据抓取和处理的效率。

    nutch源码分析

    ### Nutch源码分析 #### 一、Nutch概述及工作流程 ...此外,随着Web技术的发展,如何更好地处理动态网络数据(例如Web2.0数据)和根据网页质量调整抓取策略等问题也成为了Nutch未来发展的重要方向。

    Nutch 安装ppt

    4. **测试**:运行 Nutch 的爬虫功能,查看是否能够将抓取的数据成功推送到 Solr 中进行索引。 #### 六、Nutch 的使用与调试 1. **配置文件**:修改 Nutch 的配置文件,如 `nutch-site.xml`,设置爬取深度、并发...

    nutch的另外两个包

    在上述过程中,JID3Lib 和 RTF-Parser 这样的插件确保了 Nutch 能够正确处理和索引非标准格式的数据,比如音频链接和 RTF 文档,从而增强其搜索引擎的能力。 总结来说,JID3Lib 和 RTF-Parser 是 Nutch 索引和理解...

    lucene2.4+nutch学习笔记三:lucene 在多个文本文档里找出包含一些关键字的文档

    Nutch是一个开源的网络爬虫项目,用于抓取互联网上的网页并建立索引。它集成了Lucene,实现了大规模网页的搜索引擎功能。Nutch的工作流程包括: 1. **抓取**:通过URL种子开始,不断发现新的链接并下载网页。 2. **...

Global site tag (gtag.js) - Google Analytics