- 浏览: 480927 次
- 性别:
- 来自: 湖南
文章分类
- 全部博客 (201)
- j2ee (43)
- oracle (9)
- mysql (7)
- db2 (1)
- j2se (3)
- spring (1)
- hibernate (3)
- struts (0)
- Berkeley DB (0)
- linux (60)
- Apache2+PHP+MYSQL (2)
- solr (15)
- svn (1)
- IntelliJ Idea (1)
- eclipse,myeclipse (4)
- ant (2)
- vim (8)
- IT生活 (4)
- 测试 (6)
- lucene (4)
- shell (1)
- nutch (18)
- thread (1)
- hadoop (5)
- mapreduce (0)
- Python (4)
- 硬件 (1)
- database (1)
- maven (1)
- 正则表达 (0)
- 互联网 (1)
最新评论
-
youngcoder:
good job
HTTP协议头部与Keep-Alive模式详解 -
javazdq:
受教了 解释的不错。
lucene创建索引高级特性和索引创建参数优化 -
josico:
有几个问题想问下楼主1. LinkedBlockingQueu ...
生产者-消费者-BlockingQueue -
annybz:
有没有关于 BlockingQueue和ConcurrentL ...
生产者-消费者-BlockingQueue -
uniquejava:
多谢,记录的很真实。
DB2 学习记录
最近在网上查了好多关于nutch增量式抓取的脚本,但是我觉得和nutch文档中所定义的增量式抓取有出入。应该算是累积式抓取。
好了,首先说一下 背景 :前一段时间搭建好nutch环境后,接下来的工作就是在怎么样 在服务器上进行累积式抓取,即在本地建立大型的索引数据库(有些问章提到分布式数据库,我不太明白)。那么毫无疑问,肯定是要用到nutch的底层命令, 如:generate fetch updatedb 等。可是,如果要人工来做的话,很费时间也很费事,那么想到的办法就是写 脚本 ,通过脚本来建立、维护、更新数据库。
前提 :要保证有大量的URL数据,可以到DMOZ 获取URL数据包(这个包蛮大的,将近300M content.rdf.u8.gz ),然后使用
bin/nutch org.apache.nutch.tools.DmozParser content.example.txt > dmoz/urls
Nutch自带的工具专门解析Dmoz包的。
接下来就可以使用Inject 命令,将一批url注射到crawldb 数据库中
bin/nutch inject localweb/crawldb dmoz
脚本部分 :思路-----1.generate
2.fetch
3.updatedb
4.循环1、2、3 通过depths来控制
5.整合segments,并删除老的segment ----mergesegs
6.invetlinks----产生linkdb数据
7.index--------生成索引(这里需要注意一个问题,下面会说)
8.dedup-------优化索引
9.merge---------看名字是整合索引的意思吧,但目前不太明白
好了脚本的思路就是这样,但要注意第七步
:bin/nutch index <index> <crawldb> <linkdb> <segment>
这里的index目录在使用该命令前应该是不存在的,那么若果是第二次运行这个脚本,index目录肯定存在,这时候怎么办?我的方法是,使用 mv --verbose localweb/index localweb/indexOLD 这样做,不但把index目录删除了,还做了备份。可是又有问题了,如果这个时候TOMCAT是开启的,那么就不能用了,因为TOMCAT线程在保护 index文件,所以我们可以调用TOMCAT的shutdown命令。等处理完毕后,在调用startup命令。
所需变量及解释 :crawldb_dir 、 segments_dir 、linkdb_dir 、index_dir 、TOMCAT_HOME
depth-----控制循环次数,threads、topN-----根据url得分,爬行排在前多少位以内的url
adddays----我目前的理解是:nutch自定义url失效时间为30天,在这里可以自己设置失效时间吧
以下是nutch官方给出的脚本
# runbot script to run the Nutch bot for crawling and re-crawling. # Usage: bin/runbot [safe] # If executed in 'safe' mode, it doesn't delete the temporary # directories generated during crawl. This might be helpful for # analysis and recovery in case a crawl fails. # # Author: Susam Pal depth=2 threads=5 adddays=5 topN=15 #Comment this statement if you don't want to set topN value # Arguments for rm and mv RMARGS="-rf" MVARGS="--verbose" # Parse arguments if [ "$1" == "safe" ] then safe=yes fi if [ -z "$NUTCH_HOME" ] then NUTCH_HOME=. echo runbot: $0 could not find environment variable NUTCH_HOME echo runbot: NUTCH_HOME=$NUTCH_HOME has been set by the script else echo runbot: $0 found environment variable NUTCH_HOME=$NUTCH_HOME fi if [ -z "$CATALINA_HOME" ] then CATALINA_HOME=/opt/apache-tomcat-6.0.10 echo runbot: $0 could not find environment variable NUTCH_HOME echo runbot: CATALINA_HOME=$CATALINA_HOME has been set by the script else echo runbot: $0 found environment variable CATALINA_HOME=$CATALINA_HOME fi if [ -n "$topN" ] then topN="-topN $topN" else topN="" fi steps=8 echo "----- Inject (Step 1 of $steps) -----" $NUTCH_HOME/bin/nutch inject crawl/crawldb urls echo "----- Generate, Fetch, Parse, Update (Step 2 of $steps) -----" for((i=0; i < $depth; i++)) do echo "--- Beginning crawl at depth `expr $i + 1` of $depth ---" $NUTCH_HOME/bin/nutch generate crawl/crawldb crawl/segments $topN \ -adddays $adddays if [ $? -ne 0 ] then echo "runbot: Stopping at depth $depth. No more URLs to fetch." break fi segment=`ls -d crawl/segments/* | tail -1` $NUTCH_HOME/bin/nutch fetch $segment -threads $threads if [ $? -ne 0 ] then echo "runbot: fetch $segment at depth `expr $i + 1` failed." echo "runbot: Deleting segment $segment." rm $RMARGS $segment continue fi $NUTCH_HOME/bin/nutch updatedb crawl/crawldb $segment done echo "----- Merge Segments (Step 3 of $steps) -----" $NUTCH_HOME/bin/nutch mergesegs crawl/MERGEDsegments crawl/segments/* if [ "$safe" != "yes" ] then rm $RMARGS crawl/segments else rm $RMARGS crawl/BACKUPsegments mv $MVARGS crawl/segments crawl/BACKUPsegments fi mv $MVARGS crawl/MERGEDsegments crawl/segments echo "----- Invert Links (Step 4 of $steps) -----" $NUTCH_HOME/bin/nutch invertlinks crawl/linkdb crawl/segments/* echo "----- Index (Step 5 of $steps) -----" $NUTCH_HOME/bin/nutch index crawl/NEWindexes crawl/crawldb crawl/linkdb \ crawl/segments/* echo "----- Dedup (Step 6 of $steps) -----" $NUTCH_HOME/bin/nutch dedup crawl/NEWindexes echo "----- Merge Indexes (Step 7 of $steps) -----" $NUTCH_HOME/bin/nutch merge crawl/NEWindex crawl/NEWindexes echo "----- Loading New Index (Step 8 of $steps) -----" ${CATALINA_HOME}/bin/shutdown.sh if [ "$safe" != "yes" ] then rm $RMARGS crawl/NEWindexes rm $RMARGS crawl/index else rm $RMARGS crawl/BACKUPindexes rm $RMARGS crawl/BACKUPindex mv $MVARGS crawl/NEWindexes crawl/BACKUPindexes mv $MVARGS crawl/index crawl/BACKUPindex fi mv $MVARGS crawl/NEWindex crawl/index ${CATALINA_HOME}/bin/startup.sh echo "runbot: FINISHED: Crawl completed!" echo ""
发表评论
-
网页去重
2011-01-11 09:34 2101搜索引擎判断复制网页一般都基于这么一个思想:为每个网页计算出一 ... -
nutch 抓取动态网页设置
2010-12-04 22:48 3812nutch过滤规则crawl-urlfilter.t ... -
nutch 中的MapReduce详细分析
2010-12-02 22:48 1831作者:马士华 发表于: ... -
提高Nutch局域网抓取的速度
2010-11-30 19:36 1319提高Nutch局域网抓取的速度 如果想要提高N ... -
nutch 过滤掉不正确的URL实现方法:
2010-11-29 22:39 1980nutch 1.0 读源码,过滤掉不正确的URL实现方法: ... -
nutch中Nutch-defaul.xml相关配置
2010-11-28 22:27 1875Nutch-default.XML相关 ... -
nutch的核心流程分析
2010-11-26 00:09 2259Crawl类的时序图。 流程如下 ... -
Nutch中文分词总结
2010-11-18 19:06 25571 中文分词介绍 中文分词是在做检索类系统时需要重点考虑 ... -
提高Nutch局域网抓取的速度
2010-11-13 22:25 1589如果想要提高Nutch局域网抓取的速度,大家第一个想到 ... -
nutch如何才能抓取到动态的url
2010-11-13 08:09 3049nutch如何才能抓取到动 ... -
Nutch-0.9源代码:Crawl类整体分析
2010-11-09 19:43 1353Nutch-0.9源代码:Crawl类整体分析 N ... -
网络爬虫调研报告
2010-11-09 19:26 1834网络爬虫调研报 ... -
配置完成nutch容易出现的错误
2010-11-09 09:14 2408配置完成nutch容易出现的错误 1.1.2 ... -
Nutch1.0的配置与运行
2010-11-09 09:10 965Nutch1.0的配置与运行 ... -
Nutch1.0的配置与运行
2010-11-08 11:17 1033Nutch1.0的配置与运行 ... -
Nutch的资料
2010-11-08 10:59 1449Nutch的资料 http://issues. ... -
nutch的基本工作流程理解
2010-11-08 10:57 1452(一): Nutch 的工作流程: ...
相关推荐
### 开发基于Nutch的集群式搜索引擎 #### Nutch背景知识与架构 Nutch是一款开源搜索引擎,使用Java语言编写,并且依赖于Lucene这一高性能全文搜索引擎库。自Nutch 0.8.0版本起,它完全运行在Hadoop平台上,这使...
Nutch 的配置文件(如 `conf/nutch-site.xml`)需要根据实际需求进行调整,比如设置抓取策略、设置抓取间隔、调整抓取范围等。Nutch 还提供了命令行工具,如 `bin/nutch crawl`,用于启动爬虫流程。 **Nutch 入门...
基于Apache Nutch 1.8和Htmlunit组件,实现对于AJAX加载类型页面的完整页面内容抓取解析。 According to the implementation of Apache Nutch 1.8, we can't get dynamic ...
Apache Nutch 是一个开源的网络爬虫框架,用于抓取互联网上的网页并建立索引,以便进行全文搜索。Nutch 2.2.1 是一个稳定版本,它依赖于其他几个组件来完成其功能,包括 Apache Ant、Apache Tomcat、Java 开发工具包...
1. **Crawldb**:Crawldb 是 Nutch 存储已抓取 URL 的数据库,记录每个 URL 的状态,如已抓取、待抓取或已忽略。 2. **Linkdb**:Linkdb 存储了 URL 之间的链接关系,有助于确定网页的重要性,并为爬虫提供抓取顺序...
Nutch的工作流程包括多个步骤,如生成段(Segments)、迭代抓取(Fetch)、解析(Parse)、更新链接数据库(Update)、生成新的种子(Generate)、选择待抓取页面(Select)、重定向处理(Fetch)以及索引(Index)...
Nutch是Apache软件基金会开发的一款开源搜索引擎项目,主要用于网络数据抓取和索引。这个“Nutch入门教程 高清 带书签”的资源,很显然是为了帮助初学者快速理解并掌握Nutch的基本操作和核心概念。下面,我们将深入...
Nutch 1.2 是一个开源的网络爬虫项目,基于 Java 编写,用于抓取互联网上的网页并建立索引。这个项目是 Apache Software Foundation 的一部分,它为大规模的数据采集提供了强大的工具。Nutch 1.2 版本相对于早期版本...
### Nutch 1.7 二次开发培训讲义之腾讯微博抓取分析 #### 一、概述 Nutch 是一个开源的网络爬虫项目,它提供了灵活的数据抓取能力,并支持二次开发定制功能。本篇培训讲义主要针对的是如何使用 Nutch 1.7 版本对...
编译完成后,可以运行Nutch的命令行工具,如`bin/nutch inject`来注入种子URL,`bin/nutch fetch`执行抓取,`bin/nutch update`更新已抓取的页面,`bin/nutch generate`生成待抓取的URL列表,以及`bin/nutch crawl`...
Nutch 的爬虫数据通常包括了它在抓取过程中收集到的网页URL、网页内容、元数据以及爬取日志等信息。 在Nutch的数据流程中,主要涉及以下几个关键步骤: 1. **种子URL生成**:爬虫的起点是种子URL列表,这些URL决定...
Nutch的工作流程主要包括以下几个阶段:注入(Injector)、生成抓取URL(Generator)、网页抓取(Fetcher)、网页解析(ParseSegment)、数据库更新(CrawlDb)、链接数据库处理(LinkDb)以及索引构建(Indexer)。...
Apache Nutch 是一个开源的网络爬虫框架,用于抓取互联网上的网页并建立索引,以便于搜索引擎进行高效的检索。Nutch 2.3 版本是该项目的一个稳定版本,包含了丰富的功能和优化,是学习和研究网络爬虫技术的理想选择...
Crawldb是Nutch用于存储已抓取网页信息的数据库,包括网页的URL、抓取时间、状态码等,是分析抓取效率和效果的重要工具。 **6.2 Linkdb** Linkdb用于存储网页之间的链接关系,是分析网页结构和构建链接图谱的基础...
但在后续版本中,为了提高效率和功能,Nutch将索引的建立以及搜索交由Solr实现,从而形成了以Nutch为核心抓取和分析网页,以Solr为核心建立索引和提供搜索的分工合作模式。 具体的工作流程可以概括为以下步骤: 1....