`
peigang
  • 浏览: 170540 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

nutch1.4 爬虫父页面参数传递到子页面注意事项

 
阅读更多

1、inject中以读取文件的方式传入自定义参数:

 

datum.getMetaData().put(KEY, VALUE);

 

 将文件中读取的参数加入。

2、fetch中 传递参数:

1、run方法中由QueueFeeder爬取队列维护爬取列表。

2、根据自定义的线程数量启动FetcherThread线程。

3、FetcherThread从队列中以原子方式获取爬取地址,爬取该地址网页内容并进行解析。解析过程由output()方法封装,该方法中传递参数依靠content来实现,如:

 

content.getMetadata().set(KEY, datum.getMetaData().get(KEY).toString());

 

 

由此将indect中datum传入的参数交给content。

 4、 output()方法 中parseResult变量为解析页面返回变量。

if (parseResult != null) {}部分目前为止未发现存在代码执行的情况,为了避免漏洞给予考虑,在for循环中增加

 

parseData.getContentMeta().set(KEY, datum.getMetaData().get(KEY).toString()); 

 

 

此时解析页面结果保存了参数。在解析结果子链接中增加如下代码:

 

if (maxOutlinkDepth > 0 && outlinkDepth < maxOutlinkDepth) {
             ........
              while(iter.hasNext() && outlinkCounter < maxOutlinkDepthNumLinks) {
                reporter.incrCounter("FetcherOutlinks", "outlinks_following", 1);

                // Create new FetchItem with depth incremented
                //追加修改,重新创建Datum,将父类的网站各项站点属性加入子链接中。
                
                CrawlDatum outLinkDatum = new CrawlDatum(CrawlDatum.STATUS_LINKED, interval);
                if(datum.getMetaData().get(CrawlUrlConstants.SOURCE) != null){
                    outLinkDatum.getMetaData().put(KEY, datum.getMetaData().get(KEY));
                }
                .......
                fetchQueues.addFetchItem(fit);

                outlinkCounter++;
              }
            }
 

 

 5、parseSegment中解析页面内容(注意:4中解析部分目前发现在此处实现)。

 

public void map(WritableComparable key, Content content,
                  OutputCollector<Text, ParseImpl> output, Reporter reporter)
 

 

方法中

 

parseResult = new ParseUtil(getConf()).parse(content); 

 

 

实现页面解析,解析由自定义parse、filter接口实现,在filter中传递参数代码如下:

 

parse.getData().getContentMeta().set(key, content.getMetadata().get(key));

 

 job作业格式化

 

public void reduce(Text key, Iterator<Writable> values,
                     OutputCollector<Text, Writable> output, Reporter reporter)
    throws IOException {
    output.collect(key, (Writable)values.next()); // collect first value
  }

  汇总的结果。

 

job.setOutputFormat(ParseOutputFormat.class);

  指定了格式化对象,并传递参数,代码如下:

 

return new RecordWriter<Text, Parse>() {


        public void write(Text key, Parse parse)
          throws IOException {
          
          ......
          for (int i = 0; i < links.length && validCount < outlinksToStore; i++) {
            ......
			//追加自定义属性:向子链接datum对象添加父链接的属性。

            if(parseData.getContentMeta().get(KEY) != null){
                target.getMetaData().put(KEY, new Text(parseData.getContentMeta().get(KEY)));
            }
.....
            targets.add(new SimpleEntry(targetUrl, target));
			......
            validCount++;
          }
.....
        
      };
 

以上代码展示了参数传递的各个部分,仅供参考!

 

0
1
分享到:
评论

相关推荐

    nutch1.4帮助文档

    nutch1.4帮助文档,学习nutch1.4必备,最新nutch1.4核心类解读!

    nutch_1.4配置

    使用`bin/nutch crawl urls -dir &lt;output_dir&gt; -depth &lt;depth&gt; -topN &lt;num&gt;`命令启动爬虫,其中`&lt;output_dir&gt;`指定爬行结果的存储目录,`&lt;depth&gt;`设定爬行深度,`&lt;num&gt;`控制每层深度的最大爬行页面数。 #### 五、...

    apache-nutch-1.4

    Nutch 1.4是该项目的一个稳定版本,发布于2012年,尽管后续有更新的版本,但1.4版本因其稳定性及广泛的应用而备受青睐。在深入探讨Nutch 1.4的知识点之前,我们先来了解一下什么是Apache Nutch。 Apache Nutch是一...

    nutch_1.4在windows下安装配置.pdf

    - **步骤**: 打开 Cygwin,进入 `nutch-1.4/runtime/local` 目录(如解压到 D 盘,则路径为 `/cygdrive/d/apache-nutch-1.4/runtime/local`)。 - **命令**: 输入 `bin/nutch`,如果显示命令信息提示,则表示 Nutch ...

    Nutch1.4_windows下eclipse配置图文详解.docx

    - **注意事项**:文档中指出使用 JDK1.5 可能在编译过程中出现失败的情况,因此推荐使用 JDK1.6。 **1.2 Eclipse 安装** - **下载地址**:文档中提供的下载地址为 [Eclipse 官方下载页面]...

    apache-nutch-1.4-bin.tar.gz.part2

    apache-nutch-1.4-bin.tar.gz.part2

    apache-nutch-1.4-bin.tar.gz

    1. **爬虫(Spider)**:Nutch 的爬虫负责在网络中发现新的页面并跟踪链接进行抓取。它通过种子URL开始,然后遍历网页,遵循robots.txt协议,尊重网站的抓取规则。 2. **抓取模块(Fetcher)**:负责下载网页内容。...

    nutch 爬虫数据nutch 爬虫数据nutch 爬虫数据nutch 爬虫数据

    Nutch 的爬虫数据通常包括了它在抓取过程中收集到的网页URL、网页内容、元数据以及爬取日志等信息。 在Nutch的数据流程中,主要涉及以下几个关键步骤: 1. **种子URL生成**:爬虫的起点是种子URL列表,这些URL决定...

    nutch爬虫资料

    Nutch是一款开源的网络爬虫项目,主要用于抓取和索引互联网上的网页内容。它由Apache软件基金会开发,是Hadoop大数据生态系统的一部分,利用Java语言编写。本资料包围绕Nutch爬虫,提供了相关的参考书籍和源代码分析...

    apache-nutch-1.4-src.tar.gz_nutch_搜索引擎

    Apache Nutch 是一款高度可扩展的开源全文搜索引擎框架,它为构建自定义的网络爬虫和搜索引擎提供了强大的工具集。Nutch 的设计目标是处理大量网页数据,进行高效的抓取、索引和搜索操作。在“apache-nutch-1.4-src....

    nutch1.7 爬虫

    一个已经部署好的 nutch1.7爬虫。 导入到 eclipse里面就能用了。假如不能用的话。 还是装个cygwin 吧 找到org.apache.nutch.crawl.Crawl 这个类。 run configuration 在 Programa argument 里面 输入 crawl urls -...

    nutch爬虫+java+eclipse

    3.3 配置Nutch:在conf目录下,你需要编辑nutch-site.xml文件,配置爬虫的参数,如抓取间隔、抓取范围、URL过滤规则等。 3.4 运行Nutch:在Eclipse中,可以直接运行Nutch的main方法,如org.apache.nutch.crawl....

    apache-nutch-1.4-bin.part2

    apache-nutch-1.4-bin.part2

    apache-nutch-1.4-bin.part1

    apache-nutch-1.4-bin.part1

    基于ApacheNutch和Htmlunit的扩展实现AJAX页面爬虫抓取解析插件nutch-htmlunit.zip

    基于Apache Nutch 1.8和Htmlunit组件,实现对于AJAX加载类型页面的完整页面内容抓取解析。 According to the implementation of Apache Nutch 1.8, we can't get dynamic ...

    Apache Nutch 网络爬虫.rar

    Nutch是一个开源的网络爬虫框架,由Apache基金会开发和维护。它能够高效地抓取并处理海量数据,并提供了丰富的插件来支持各种数据源和处理方式。由于其高度可定制化和易于扩展的特性,Nutch被广泛应用于搜索引擎、...

    Nutch爬虫工作流程及文件格式详细分析.doc

    Nutch的工作流程涉及到多个子操作,如: - **创建新的WebDb**(admin/webdb/clean) - **生成Fetchlist**(bin/nutch urlfilter) - **抓取网页**(bin/nutch fetch) - **更新WebDB**(bin/nutch updatedb) - **...

    nutch爬虫系统分析.doc

    nutch爬虫系统分析 Nutch爬虫系统是基于Java语言开发的一款开源网络爬虫框架,旨在提供一个灵活、可扩展、可靠的爬虫解决方案。下面是对Nutch爬虫系统的分析。 Nutch简介 Nutch是一款基于Java语言开发的网络爬虫...

    Apache Nutch网络爬虫 v1.19.zip

    Apache Nutch 是一个开源的网络爬虫项目,用于抓取互联网上的网页并建立索引,以便于搜索引擎进行高效的数据检索。v1.19 是该项目的一个稳定版本,提供了丰富的功能和改进,适用于研究、开发以及各种数据分析任务。...

Global site tag (gtag.js) - Google Analytics