zoukankan      html  css  js  c++  java
  • Nutch1.9安装配置与基本使用介绍

    原文地址:http://blog.csdn.net/fyfmfof/article/details/42522981

    一、Nutch1.9的安装配置

    环境:Ubuntu14.10
    在官网下载apache-nutch-1.9-src.tar.gz压缩包
    官网地址:http://nutch.apache.org/downloads.html
    进入压缩包所在目录,用tar–zxvf apache-nutch-1.9-src.tar.gz解压
    进入解压出来的目录apache-nutch-1.9
    使用ant命令进行编译,如果系统没有安装ant则先用sudo apt-get install ant命令安装
    编译后会出现一个runtime目录,进入后有2个目录,一个deploy,一个local,deploy目录下是利用hadoop进行分布式爬取使用的,这里我先用local模式进行命令说明。
    进入local目录下的conf目录,在nutch-site.xml文件中添加

    <property>
     <name>http.agent.name</name>
     <value>Guardian</value>
     <description>HTTP 'User-Agent' request header. MUST NOT be empty -
     please set this to a single word uniquely related to your organization.
    
     NOTE: You should also check other related properties:
    
       http.robots.agents
       http.agent.description
       http.agent.url
       http.agent.email
       http.agent.version
    
      andset their values appropriately.
    
     </description>
    </property>
    

    至此配置完成,可以在local模式下开始爬取了

    nutch与solr的集成配置详见Solr4.10.2集成Nutch1.9与自带UI界面使用

    二、Nutch1.9的爬取命令

    1.循环迭代爬取

    进入local目录下后可以通过执行bin/crawl看到爬取命令的提示
    bin/crawl <seedDir> <crawDir><solrURL> <numberOfRounds>
    seedDir :url文件目录,在此目录下创建txt文件写入要爬取的url入口,txt文件可以为若干个。
    crawDir:爬取数据存放目录,自由指定一个文件夹即可。
    solrURL:solr配置好的url,这里我没配置好solr先设置为空
    numberOfRounds:迭代次数

    根据命令提示(如果还没有安装配置solr的话,可以先把solrURL设置一个不存在的值,但此时迭代爬取只会执行一轮然后在solr索引时异常退出),在local目录下创建一个urls目录在里面创建一个txt文件写入要爬取的url入口(一行一条),于是我们在local目录下执行下面的命令:
    bin/crawl urls data http://localhost:8080/solr 3

    然后可以看到运行结果如下:

    这里写图片描述

    2. nutch单步爬取命令

    ①inject 注入url(只执行一次就好)

    Usage: Injector 示例:
    bin/nutch inject data/crawldb/ urls

    ②generate 迭代初始化

    Usage: Generator 示例:
    bin/nutch generate data/crawldb/ data/segments/

    ③fetch 抓取

    Usage: Fetcher [-threads n]示例:
    bin/nutch fetch data/segments/20150125005942/

    ④parse解析

    Usage: ParseSegment segment [-noFilter] [-noNormalize]示例:
    bin/nutch parse data/segments/20150125005942/

    ⑤updatedb 更新

    Usage: CrawlDb (-dir | …)示例:
    bin/nutch updatedb data/crawldb/ data/segments/20150125005942/

    补充:以上命令参数未介绍完整,命令不清楚参数或命令下有哪些子选项可以输入bin/nutch、bin/nutch inject类似的命令,nutch会给出提示。

    3. nutch的爬取循环示意图

    在运行的日志输出中我们可以清楚看到nutch的运行步骤,nutch的爬取循环示意图如下:
    这里写图片描述
    在运行完crawl命令后,在指定的数据文件夹中会产生3个目录:crawdb、linkdb、segments
    Crawdb:爬取数据的总体信息集合,多次爬取数据的爬取信息会在此文件夹中存放。
    Linkdb:链接反转信息集合,多次数据的链接反转信息会在此文件夹中存放。
    Segments:按照每次的爬取会生成新的文件夹,每个文件夹用日期标注,每个文件夹内存放了爬取状态,解析内容等相关详细信息。
    以上3个文件夹中信息均为二进制的形式存放,文本转换在下面的命令会介绍到。

    每个Segment中也有6个子目录,内容如下:
    Content:页面内容(html、xml等)
    Fetch:抓取状态及相关信息
    Generate:抓取列表及相关信息
    Parse:解析列表及相关信息
    Parse_data:解析结果链接相关信息(outlink)
    Parse_text:解析结果文本相关信息

    4.Nutch整体框架图如下:

    这里写图片描述

    注:nutch1.2版本后lucene index模块取消,移交solr进行对应处理

    三、Nutch1.9的读取命令

    对应之前的三个文件夹,nutch的读取信息有3个,reabdb、readlinkdb、readseg,因为前面三个文件夹的信息均为二进制存储,所以要使用这三个指令来进行相应数据的读取和查询。

    1.bin/nutch readdb

    readdb
    -stats 显示当前爬取信息的总体统计信息
    -dump 以文本的方式导出总体url的相关信息
    -url 以特定的url来查询对应概要信息
    -topN 将前N个url导出文本信息,还可以设置以score的方式排列和用min值来过滤
    示例:
    bin/nutch readdb data/crawldb/ -stats
    bin/nutch readdb data/crawldb/ -dump data/crawldb_dump

    2. bin/nutch readseg

    readseg (对应到segments下的子目录)
    -dump 文本导出–no*可以选择去掉不要的内容
    -list 查询每个segement的状态信息
    -get 获取特定url相关信息
    示例(只dump出parsetext部分):
    bin/nutch readseg -dump data/segments
    /20150125005942/ data/parsetext_dump -nocontent -nofetch -nogenerate -noparse -noparsedata

    3. bin/nutch readlinkdb

    -dump 导出链接分析相关文本(反转链接等)
    -url 查找特定链接相关信息(链入信息)
    示例:
    bin/nutch readlinkdb data/linkdb/ -dump data/linkdb_dump

    四、Nutch1.9的其他工具命令

    1.当小段过多需要合并压缩命令

    对应到三个主data文件有
    mergedb、mergelinkdb、mergesegs

    2.parsechecker

    对一个url进行解析测试,用来检测爬取解析相关信息

    3.domainstats

    域信息统计
    host/domain/suffix/tld 四个统计范围从小到大
    http://www.gome.com.cn/*来说
    host就是www.gome.com.cn
    domain就是gome.com.cn(去掉第一个)
    suffix就是com.cn(去掉前2个)
    tld就是cn(最后一个)

    4.webgraph

    针对已抓取的信息建立3个数据库
    outlinkdb 输出链接
    inlinkdb 输入链接
    nodedb 分值
    这些信息依旧是用二进制进行存储的

    5.nodedumper

    将webgraph中的二进制以文本输出,可自定义topn与排序规则
    -group可以以

    6.linkrank

    按照nutch默认的方式计算每个链接的score

    7.scoreupdater

    对crawldb更新所有在webgraphdb中计算出来的值,其他则score清零

    8.freegen

    轻量级抓取,相对于generate命令来说略过了crawldb库直接从指定url生成抓取列表
    generate是从crawldb中获取抓取列表

    注:上述内容并未完整包含nutch所有命令,只列举了常用基本命令和整体介绍

  • 相关阅读:
    Java Lock Example – ReentrantLock(java锁的例子)
    Java Scheduler ScheduledExecutorService ScheduledThreadPoolExecutor Example(ScheduledThreadPoolExecutor例子——了解如何创建一个周期任务)
    ThreadPoolExecutor – Java Thread Pool Example(java线程池创建和使用)
    Java Timer TimerTask Example(java Timer的例子)
    Java ThreadLocal Example(java中的ThreadLocal例子)
    Thread Safety in Java(java中的线程安全)
    java 线程方法join的简单总结
    JAVA多线程和并发基础
    BAT面试常的问题和最佳答案
    linux服务脚本编写
  • 原文地址:https://www.cnblogs.com/wygdove/p/4542104.html
Copyright © 2011-2022 走看看