hadoop使用(四)

做一个网络爬虫的程序吧,根据客户的需求,要求把相关的内容爬取到本地

最终选择的是apache nutch,到目前为止最新的版本是1.3

1. Nutch是什么?

Nutch是一个开源的网页抓取工具,主要用于收集网页数据,然后对其进行分析,建立索引,以提供相应的接口来对其网页数据进行查询的一套工具。其底层使用了Hadoop来做分布式计算与存储,索引使用了Solr分布式索引框架来做,Solr是一个开源的全文索引框架,从Nutch 1.3开始,其集成了这个索引架构

2. 在哪里要可以下载到最新的Nutch?

在下面地址中可以下载到最新的Nutch 1.3二进制包和源代码

http://mirror.bjtu.edu.cn/apache//nutch/

3. 如何配置Nutch?

   3.1 对下载后的压缩包进行解压,然后cd $HOME/nutch-1.3/runtime/local

   3.2 配置bin/nutch这个文件的权限,使用chmod +x bin/nutch

   3.3 配置JAVA_HOME,使用export JAVA_HOME=$PATH

4. 抓取前要做什么准备工作?

4.1 配置http.agent.name这个属性,在conf目录下

<prename="code"class="html"><property>     <name>http.agent.name</name>     <value>My Nutch Spider</value> </property> <pre name="code" class="html"><property> <name>http.agent.name</name> <value>My Nutch Spider</value> </property>

4.2 建立一个地址目录,mkdir -p urls

   在这个目录中建立一个url文件,写上一些url,如

http://www.apache.org http://nutch.apache.org/

4.3 然后运行如下命令

bin/nutch crawl urls -dir mydir -depth 3 -topN 5  bin/nutch crawl urls -dir crawl -depth 3 -topN 5

注意,这里是不带索引的,如果要对抓取的数据建立索引,运行如下命令

-dir                       选项设置抓取结果存放目录

-depth                 选项设置爬取的深度

-threads             选项设置并行爬取的线程数

-topN                  选项设置每个深度爬取的最大页数

最后就可以查看mydir中的结果了

一个典型的爬虫主要有如下阶段

  1. URL库初始化然后开始爬取。
  2. 爬虫读取没有访问过的URL,来确定它的工作范围。
  3. 获取URL的内容
  4. 解析内容,获取URL以及所需的数据。
  5. 存储有价值的数据。
  6. 规范化新抓取的URL。
  7. 过滤掉不需要爬去的URL。
  8. 把要抓取的URL更新到URL库中。
  9. 重复步骤2,直到抓取的网页深度完毕为止。 附加一张中文图

不知道为什么在Nutch-1.3中没了Nutch自带的搜索war文件,而且在Nutch-1.3中,抓取文件后,生成的目录只有crawldb,linkdb,segments

查了一下官网Wiki,上面是把Nutch的索引映射到solr,用solr来提供搜索功能,详见官网Wiki说明:http://wiki.apache.org/nutch/RunningNutchAndSolr

 对比这两个,搜索同一关键字,发现Nutch搜索的展示结果有重复,而solr没有重复,还有solr可以在conf/schema.xml配置字段属 性,nutch好像改了这个配置文件,也没起效果,比如,我想让索引中存储content和termvector,可是搜索结果,并没有存储

下面安装并且配置solr

从官方下载

http://www.apache.org/dyn/closer.cgi/lucene/solr/

下载完成后解压缩

到solr的example目录下,运行

java -jar start.jar

运行成功如图

打开浏览器

http://localhost:8983/solr/

进入solradmin出现如下界面,运行成功

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏恰童鞋骚年

Hadoop学习笔记—19.Flume框架学习

START:Flume是Cloudera提供的一个高可用的、高可靠的开源分布式海量日志收集系统,日志数据可以经过Flume流向需要存储终端目的地。这里的日志是一...

7420
来自专栏SpringBoot 核心技术

第四十章:基于SpringBoot & Quartz完成定时任务分布式多节点负载持久化

492120
来自专栏码神联盟

框架 | SSH和SSM对比异同点、各自优势

当下流行的两种企业开发MVC开源框架,是我们Java程序猿必备知识能力。MVC,即模型(model)-视图(view)-控制器(controller)的缩写,一...

504140
来自专栏搜云库

基于 Spring Cloud 完整的微服务架构实战

基于 Spring Cloud 完整的微服务架构实战 本项目是一个基于 Spring Boot、Spring Cloud、Spring Oauth2 和 Spr...

79180
来自专栏Ryan Miao

使用checkstyle来规范你的项目

自从做了程序员,关于格式化的讨论就不曾中断过,到底什么才是正确的,什么才是错误的,到现在也没有完整的定论。但随着时间发展,渐渐衍生出一套规范出来。没有什么绝对的...

22810
来自专栏数据和云

修而未复:说说WebLogic那修不完的Java反序列化漏洞

编者说明:这篇文章初稿写在Oracle CPU补丁发布之后,考虑到文章内容的影响,并未在当时发布,WebLogic 的 Java 反序列化漏洞,已经修复了多次,...

24760
来自专栏difcareer的技术笔记

ubuntu14.04编译android4.4对应的linux内核

参考资料: [google官方资料] 官方是最权威的,但会有细节缺失。 [如何下载编译android内核] 可以参考别人的动手实践,弥补缺失的细节。

11520
来自专栏FreeBuf

自动化渗透测试的侦察扫描仪:sn1per

sn1per是一个自动化渗透测试侦察扫描仪,可以在渗透测试和漏洞扫描过程中使用。 特点: 自动化渗透测试的侦察扫描:sn1per 自动收集基本侦察(例如WHOI...

270100
来自专栏开源项目

码云推荐 | J2EE 快速开发平台 renren-security-boot

renren-security-boot 是一款基于代码生成器的 J2EE 快速开发平台,其核心设计目标是开发迅速、学习简单、轻量级、易扩展;使用 Spring...

46180
来自专栏xingoo, 一个梦想做发明家的程序员

AngularJS 国际化——Angular-translate

对于一个用户群面向全球的的应用来说,不得不考虑国际化的问题。当然,即便是刚刚起步的小应用,如果有心搞大,也应该提前设计国际化的方案。 本篇讲述使用Angul...

32280

扫码关注云+社区

领取腾讯云代金券