注意,tomcat和nutch路径需要修改成自己的
# nutch更目录
NUTCH_HOME=/cygdrive/e/java/CoreJava/IndexSearchAbout/nutch-1.0
# tomcat目录
CATALINA_HOME=/cygdrive/d/JavaTools/apache-tomcat-6.0.14
还有批量将crawled/替换为你的索引存储目录。
将该shell代码保存到你的爬虫nutch更目录下,可任意命名(如:runbot)
然后在cygwin里直接输入一下文件名就可以运行
#!/bin/sh
# 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
#
# 增量采集时候特别注意,如果在同一台机器上运行Crawl和Searcher,
# 由于tomcat处于启动状态,tomcat线程占用着索引文件,所以在增量
# 爬取时候蜘蛛需要删除旧索引后从新生成新索引(Crawl/index文件夹),
# 由于索引文件夹被TOMCAT占用着,所以蜘蛛操作不了程序就报错了。
# 判断crawl/index文件夹是否被占用简单的方法就是直接手动删除一
# 下index(删除前做一下这文件夹的备份,呵呵),删除不了说明被占用了。
#
# 下边这段增量爬取脚本逻辑上是解决了线程占用的问题,不过可能由于机器不能及时关闭java.exe,所以很多时候都抛异常了“提示什么dir exist
# 1,注入爬取入口
# 2,逐个深度进行爬取
# 3,合并爬取下来的内容
# 4,将数据段相关链接写入linkdb
# 5,生成indexes
# 6,去重
# 7,合并索引
# 8,停止tomcat,释放操作索引的线程,Crawl更新线程后启动TOMCAT
#
# 参数设置
depth=5
threads=10
adddays=1
topN=30 #Comment this statement if you don't want to set topN value
# Arguments for rm and mv
RMARGS="-rf"
MVARGS="--verbose"
# Parse arguments
# 模式,yes启动,在索引操作时候会做备份,否则反之,直接更新索引!
safe=yes
# nutch更目录
NUTCH_HOME=/cygdrive/e/java/CoreJava/IndexSearchAbout/nutch-1.0
# tomcat目录
CATALINA_HOME=/cygdrive/d/JavaTools/apache-tomcat-6.0.14
if [ -z "$NUTCH_HOME" ]
then
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
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
# 1,注入爬取入口
echo "----- Inject (Step 1 of $steps) -----"
$NUTCH_HOME/bin/nutch inject crawled/crawldb urls/url.txt
# 2,逐个深度进行爬取
echo "----- Generate, Fetch, Parse, Update (Step 2 o $steps) -----"
for((i=0; i <= $depth; i++))
do
echo "--- Beginning crawl at depth `expr $i + 1` of $depth ---"
$NUTCH_HOME/bin/nutch generate crawled/crawldb crawled/segments $topN \
-adddays $adddays
if [ $? -ne 0 ]
then
echo "runbot: Stopping at depth $depth. No more URLs to fetcfh."
break
fi
segment=`ls -d crawled/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 crawled/crawldb $segment
done
# 3,合并爬取下来的内容
echo "----- Merge Segments (Step 3 of $steps) -----"
#将多个数据段合并到一个数据中并且保存至MERGEDsegments
$NUTCH_HOME/bin/nutch mergesegs crawled/MERGEDsegments crawled/segments/*
#rm $RMARGS crawled/segments
rm $RMARGS crawled/BACKUPsegments
mv $MVARGS crawled/segments crawled/BACKUPsegments
mkdir crawled/segments
mv $MVARGS crawled/MERGEDsegments/* crawled/segments
rm $RMARGS crawled/MERGEDsegments
# 4,将数据段相关链接写入linkdb
echo "----- Invert Links (Step 4 of $steps) -----"
$NUTCH_HOME/bin/nutch invertlinks crawled/linkdb crawled/segments/*
# 5,生成indexes
echo "----- Index (Step 5 of $steps) -----"
$NUTCH_HOME/bin/nutch index crawled/NEWindexes crawled/crawldb crawled/linkdb crawled/segments/*
# 6,去重
echo "----- Dedup (Step 6 of $steps) -----"
$NUTCH_HOME/bin/nutch dedup crawled/NEWindexes
# 7,合并索引
echo "----- Merge Indexes (Step 7 of $steps) -----"
$NUTCH_HOME/bin/nutch merge crawled/NEWindex crawled/NEWindexes
# 8,停止tomcat,释放操作索引的线程,Crawl更新线程后启动TOMCAT
# 需要先停止tomcat,否则tomcat占用着索引文件夹index,不能对索引文件进行更新!(异常:什么文件以存在之类的,dir exists……)
echo "----- Loading New Index (Step 8 of $steps) -----"
#${CATALINA_HOME}/bin/shutdown.sh
#如果是安全模式则先备份后删除索引
if [ "$safe" != "yes" ]
then
rm $RMARGS crawled/NEWindexes
rm $RMARGS crawled/index
else
rm $RMARGS crawled/BACKUPindexes
rm $RMARGS crawled/BACKUPindex
mv $MVARGS crawled/NEWindexes crawled/BACKUPindexes
mv $MVARGS crawled/index crawled/BACKUPindex
rm $RMARGS crawled/NEWindexes
rm $RMARGS crawled/index
fi
#需要先删除旧索引(在上边已经完成)后在生成新索引
mv $MVARGS crawled/NEWindex crawled/index
#索引更新完成后启动tomcat
#${CATALINA_HOME}/bin/startup.sh
echo "runbot: FINISHED: Crawl completed!"
echo ""
分享到:
相关推荐
### Nutch开源搜索引擎增量索引recrawl的终极解决办法续 #### 一、背景与问题概述 在前一篇文章中,我们探讨了Nutch开源搜索引擎在进行增量索引更新(recrawl)时遇到的问题及其初步解决方案。然而,在实际操作...
### Nutch开源搜索引擎增量索引recrawl的终极解决办法 #### 知识点解析: **Nutch与Hadoop集成下的recrawl策略** Nutch是一款基于Java的开源搜索引擎框架,能够爬取网页、提取数据并建立索引。它利用Apache ...
1. **Crawldb**:Crawldb 是 Nutch 存储已抓取 URL 的数据库,记录每个 URL 的状态,如已抓取、待抓取或已忽略。 2. **Linkdb**:Linkdb 存储了 URL 之间的链接关系,有助于确定网页的重要性,并为爬虫提供抓取顺序...
( Nutch,第1部分:爬行(译文) ( Nutch,第1部分:爬行(译文)
1.2研究nutch的原因...1 1.3 nutch的目标..1 1.4 nutch VS lucene.....2 2. nutch的安装与配置.....3 2.1 JDK的安装与配置.3 2.2 nutch的安装与配置........5 2.3 tomcat的安装与配置......5 3. nutch初体验7 3.1 ...
### Nutch插件深入研究 #### 一、Nutch插件概述 Nutch是一个开源的Web爬虫项目,由Apache软件基金会维护。它基于Hadoop,能够从互联网上抓取和索引网页,构建搜索引擎。Nutch的强大之处在于其高度可定制性,这主要...
Nutch 的爬行过程涉及多个步骤,包括使用入口地址、URL 正则表达式和搜索深度限制。Hadoop 的使用使得 Nutch 具备了分布式处理能力。关键类包括: - **Fetcher**:通过多线程运行 FetcherThread,调用适当的 ...
对于希望构建个人搜索引擎或对互联网内容进行深入研究的用户来说,Nutch是一个非常实用的工具。 由于Nutch的开源特性和强大的社区支持,它能持续得到更新和维护,这使得Nutch成为了许多搜索引擎开发者和网站管理员...
2. **增量索引**:在Nutch中,增量索引是指只更新自上次索引以来变化或新增的网页,而不是重新索引整个数据库。这提高了系统的效率,减少了资源消耗。Nutch使用Hadoop进行分布式处理,通过MapReduce实现增量索引的...
Nutch初体验部分涉及爬行企业内部网和爬行全网。这一部分详细介绍了如何配置Nutch以及Tomcat,执行抓取命令,并对结果进行测试。其中,爬行企业内部网涉及到IntranetRecrawl,而爬行全网则详细讨论了爬行官方网址和...
Nutch是一个优秀的开放源代码的Web...分析开源搜索引擎Nutch代码,研究了Nutch的页面排序方法。在Nutch原有的结构基础上提出了3种修改Nutch 排序的方法,对每种方法的实现进行了阐述,最后对这些方法的特点进行了比较
然后,使用`bin/nutch crawl urls -dir crawl -depth 3 -topN 50`命令开始爬行。参数说明: - `-dir`:指定爬行结果的存储目录。 - `-threads`:设定并发抓取的线程数。 - `-depth`:设置爬行深度。 - `-topN`:在每...
MP3文件信息解析是音频处理领域的一个重要环节,...这需要对ID3标准有深入理解,并熟悉Nutch的插件体系和解析机制。通过定制`parse-html`,我们可以实现对MP3文件的智能处理,从而更好地服务于音频内容的检索和管理。
在IT领域,Apache Nutch是一款开源的Web爬虫...这不仅为学习和研究Nutch提供了便利,也为实际应用中的数据采集和分析打下了坚实的基础。记住,配置过程中遇到任何问题,都可以查阅官方文档或社区论坛,寻求解决方案。
4. **执行爬行命令**:使用`bin/nutch crawl urls -dir <output_dir> -depth <depth> -topN <num>`命令启动爬虫,其中`<output_dir>`指定爬行结果的存储目录,`<depth>`设定爬行深度,`<num>`控制每层深度的最大爬行...
**Nutch 概述** Nutch 是一个开源的网络爬虫项目,主要设计用于抓取、索引和搜索互联网上的网页。它由 Apache 软件基金会开发,并且是 Hadoop 的一部分,这意味着它能够利用分布式计算来处理大规模的数据抓取任务。...
在完成Nutch 1.7的搭建后,你可以进一步研究其工作原理,包括爬虫策略、链接分析算法、分词技术等。同时,Nutch与Hadoop结合可以处理大规模的数据抓取和索引,这在大数据领域有着广泛的应用。通过深入学习,你可以...