首页 > 其他分享 >Nutch介绍及使用(验证)

Nutch介绍及使用(验证)

时间:2023-04-28 12:32:01浏览次数:40  
标签:xml nutch 验证 介绍 2.2 apache org Nutch


1. Nutch介绍

Nutch是一个开源的网络爬虫项目,更具体些是一个爬虫软件,可以直接用于抓取网页内容。

现在Nutch分为两个版本,1.x和2.x。1.x最新版本为1.7,2.x最新版本为2.2.1。两个版本的主要区别在于底层的存储不同。

1.x版本是基于Hadoop架构的,底层存储使用的是HDFS,而2.x通过使用Apache Gora,使得Nutch可以访问HBase、Accumulo、Cassandra、MySQL、DataFileAvroStore、AvroStore等NoSQL。

2. 编译Nutch

Nutch1.x从1.7版本开始不再提供完整的部署文件,只提供源代码文件及相关的build.xml文件,这就要求用户自己编译Nutch,而整个Nutch2.x版本都不提供编译完成的文件,所以想要学习Nutch2.2.1的功能,就必须自己手动编译文件。

2.1 下载解压


$ wget http://archive.apache.org/dist/nutch/2.2.1/apache-nutch-2.2.1-src.tar.gz
$ tar zxf apache-nutch-2.2.1-src.tar.gz


2.2 编译


$ cd apache-nutch-2.2.1
$ ant


有可能你会得到如下错误:


Trying to override old definition of task javac
  [taskdef] Could not load definitions from resource org/sonar/ant/antlib.xml. It could not be found.

ivy-probe-antlib:

ivy-download:
  [taskdef] Could not load definitions from resource org/sonar/ant/antlib.xml. It could not be found.


解决办法:

  1. 下载sonar-ant-task-2.1.jar,将其拷贝到apache-nutch-2.2.1目录下面
  2. 修改build.xml,引入上面添加的jar包:
<!-- Define the Sonar task if this hasn't been done in a common script -->
<taskdef uri="antlib:org.sonar.ant" resource="org/sonar/ant/antlib.xml">
    <classpath path="${ant.library.dir}" />
    <classpath path="${mysql.library.dir}" />
    <classpath><fileset dir="." includes="sonar*.jar" /></classpath>
</taskdef>


Nutch使用ivy进行构建,故编译需要很长时间,如果编译时间过长,建议修改maven仓库地址,修改方法:

通过用http://mirrors.ibiblio.org/maven2/替换ivy/下ivysettings.xml中的http://repo1.maven.org/maven2/来解决。代码位置为:


<property name="repo.maven.org" value="http://repo1.maven.org/maven2/" override="false"/>


编译之后的目录如下:


➜  apache-nutch-2.2.1  tree -L 1
.
├── CHANGES.txt
├── LICENSE.txt
├── NOTICE.txt
├── README.txt
├── build
├── build.xml
├── conf
├── default.properties
├── docs
├── ivy
├── lib
├── runtime
├── sonar-ant-task-2.1.jar
└── src

7 directories, 7 files


可以看到编译之后多了两个目录:build和runtime

3. 修改配置文件

由于Nutch2.x版本存储采用Gora访问Cassandra、HBase、Accumulo、Avro等,需要在该文件中制定Gora属性,比如指定默认的存储方式gora.datastore.default= org.apache.gora.hbase.store.HBaseStore,该属性的值可以在nutch-default.xml中查找storage.data.store.class属性取得,在不做gora.properties文件修改的情况下,存储类为org.apache.gora.memory.store.MemStore,该类将数据存储在内存中,仅用于测试目的。

这里,将其存储方式改为HBase,请参考 http://wiki.apache.org/nutch/Nutch2Tutorial

修改 conf/nutch-site.xml


<property>
  <name>storage.data.store.class</name>
  <value>org.apache.gora.hbase.store.HBaseStore</value>
  <description>Default class for storing data</description>
</property>


修改 ivy/ivy.xml


<!-- Uncomment this to use HBase as Gora backend. -->
<dependency org="org.apache.gora" name="gora-hbase" rev="0.3" conf="*->default" />


修改 conf/gora.properties,确保HBaseStore被设置为默认的存储,


gora.datastore.default=org.apache.gora.hbase.store.HBaseStore


因为这里用到了HBase,故还需要一个HBase环境,你可以使用Standalone模式搭建一个HBase环境,请参考 HBase Quick Start。需要说明的时,目前HBase的版本要求为 hbase-0.90.4。

4. 集成Solr

由于建索引的时候需要使用Solr,因此我们需要安装并启动一个Solr服务器。

4.1 下载,解压


$ wget http://mirrors.cnnic.cn/apache/lucene/solr/4.8.0/solr-4.8.0.tgz 
$ tar -zxf solr-4.8.0.tgz


4.2 运行Solr


$ cd solr-4.8.0/example
$ java -jar start.jar


验证是否启动成功

用浏览器打开 http://localhost:8983/solr/admin/,如果能看到页面,说明启动成功。

4.3 修改Solr配置文件

apache-nutch-2.2.1/conf/schema-solr4.xml拷贝到solr-4.8.0/solr/collection1/conf/schema.xml,并在<fields>...</fields>最后添加一行:


<field name="_version_" type="long" indexed="true" stored="true" multiValued="false"/>


重启Solr,


# Ctrl+C to stop Solr
$ java -jar start.jar


5. 抓取数据

编译后的脚本在 runtime/local/bin 目录下,可以运行命令查看使用方法:

crawl命令:


$ cd runtime/local/bin 
$ ./crawl 
Missing seedDir : crawl <seedDir> <crawlID> <solrURL> <numberOfRounds>


nutch命令:


$ ./nutch 
Usage: nutch COMMAND
where COMMAND is one of:
 inject     inject new urls into the database
 hostinject     creates or updates an existing host table from a text file
 generate   generate new batches to fetch from crawl db
 fetch      fetch URLs marked during generate
 parse      parse URLs marked during fetch
 updatedb   update web table after parsing
 updatehostdb   update host table after parsing
 readdb     read/dump records from page database
 readhostdb     display entries from the hostDB
 elasticindex   run the elasticsearch indexer
 solrindex  run the solr indexer on parsed batches
 solrdedup  remove duplicates from solr
 parsechecker   check the parser for a given url
 indexchecker   check the indexing filters for a given url
 plugin     load a plugin and run one of its classes main()
 nutchserver    run a (local) Nutch server on a user defined port
 junit          runs the given JUnit test
 or
 CLASSNAME  run the class named CLASSNAME
Most commands print help when invoked w/o parameters.


接下来可以抓取网页了。

标签:xml,nutch,验证,介绍,2.2,apache,org,Nutch
From: https://blog.51cto.com/u_16088628/6233839

相关文章

  • ATT&CK v12版本战术介绍——防御规避(四)
    一、引言在前几期文章中我们介绍了ATT&CK中侦察、资源开发、初始访问、执行、持久化、提权战术理论知识及实战研究、部分防御规避战术,本期我们为大家介绍ATT&CK14项战术中防御规避战术第19-24种子技术,后续会介绍防御规避其他子技术,敬请关注。二、ATT&CKv12简介MITREATT&CK是一......
  • C语言结构体位域简单介绍
    目录0前言1结构体简单介绍2结构体的内存对齐3结构体位域历史文章0前言这几天看到一个有趣的结构体,之前没有见过,稍微了解了一下,顺便记录一下以下例子均在32位操作系统操作1结构体简单介绍在C语言中,每种类型的变量都会占用一定的字节数,以下面几种为例char1Bin......
  • 人工智能运用--我的银行大众客户存款增长预测模型介绍(3)
    前面完成了最初的特征选择,基本没有考虑业务逻辑,我直接使用这些特征开始进行预测了。基于当前业界对XGBoost的推崇,我准备不走弯路,直接上XGBoost进行预测。 从打印的“取数据完成”可以看出数据完全读取了。下面我们用训练集进行预测,看看说明情况 程序运行了691秒,产生了xgb......
  • Django笔记三十二之session登录验证操作
    本文首发于公众号:Hunter后端原文链接:Django笔记三十二之session登录验证操作这一篇笔记将介绍session相关的内容,包括如何在系统中使用session,以及利用session实现登录认证的功能。这篇笔记将分为以下几个内容:session的使用流程session的配置和相关方法users模块......
  • 视觉定位领域专栏(一)领域介绍、应用场景和研究难点
    前言 本篇主要介绍三个方面,即视觉定位领域介绍、应用场景以及研究难点,同时会对专栏后续讲解内容做一个概述。本教程禁止转载。同时,本教程来自知识星球【CV技术指南】更多技术教程,可加入星球学习。欢迎关注公众号CV技术指南,专注于计算机视觉的技术总结、最新技术跟踪、经典论文......
  • SQL Server 2022 AlwaysOn新特性之包含可用性组介绍
    由于技术能力有限,文章仅能进行简要分析和说明,如有不对的地方,请指正,谢谢......
  • 小程序自动化测试框架Minium——框架介绍和环境搭建
    转自:https://blog.csdn.net/wessonlan/article/details/125360537一、Minium简介minium是微信团队为小程序专门开发的自动化框架,我们可以用它来做小程序的UI自动化测试,但是它的能力却不仅仅在于UI自动化。正是得益于官方订制打造,所以对于小程序很多原生内容和特性的支持自然......
  • 高性能、快响应!火山引擎 ByteHouse 物化视图功能及入门介绍
    更多技术交流、求职机会,欢迎关注字节跳动数据平台微信公众号,回复【1】进入官方交流群物化视图是指将视图的计算结果存储在数据库中的一种技术。当用户执行查询时,数据库会直接从已经预计算好的结果中获取数据,而不需要重新计算视图。具体来说,物化视图是一种以表格形式存储的结果......
  • 通过NG做用户登录验证接口返回的返回体做登录接口判断
    ng获取响应体的json里面的字段需要安装第三方模块ngx_devel_kit的ngx_http_set_misc_module的set_json_var指令,form-input-nginx-modulelocation/api{proxy_passhttp://backend;proxy_set_headerHost$host;proxy_set_headerX-Real-IP$remote_addr;pro......
  • SpringBoot SpringSecurity 介绍(基于内存的验证)
    SpringBoot集成SpringSecurity+MySQL+JWT附源码,废话不多直接盘SpringBoot已经为用户采用默认配置,只需要引入pom依赖就能快速启动SpringSecurity。目的:验证请求用户的身份,提供安全访问优势:基于Spring,配置方便,减少大量代码内置访问控制方法permitAll()表示所匹配的......