nutch研究记录3(增量爬行)

http://biaowen.javaeye.com/blog/420586

 

 

注意,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里直接输入一下文件名就可以运行

 

Java代码
  1. #!/bin/sh  
  2. # runbot script to run the Nutch bot for  crawling and re-crawling.  
  3. # Usage: bin/runbot [safe]  
  4. #        If executed in 'safe'  mode, it doesn't delete the temporary  
  5. #        directories generated during crawl. This might be helpful for   
  6. #        analysis and recovery in case  a crawl fails.  
  7. #  
  8. # Author: Susam Pal  
  9. #  
  10. # 增量采集时候特别注意,如果在同一台机器上运行Crawl和Searcher,  
  11. # 由于tomcat处于启动状态,tomcat线程占用着索引文件,所以在增量  
  12. # 爬取时候蜘蛛需要删除旧索引后从新生成新索引(Crawl/index文件夹),  
  13. # 由于索引文件夹被TOMCAT占用着,所以蜘蛛操作不了程序就报错了。  
  14. # 判断crawl/index文件夹是否被占用简单的方法就是直接手动删除一  
  15. # 下index(删除前做一下这文件夹的备份,呵呵),删除不了说明被占用了。  
  16. #  
  17. # 下边这段增量爬取脚本逻辑上是解决了线程占用的问题,不过可能由于机器不能及时关闭java.exe,所以很多时候都抛异常了“提示什么dir exist  
  18. 1 ,注入爬取入口  
  19. 2 ,逐个深度进行爬取  
  20. 3 ,合并爬取下来的内容  
  21. 4 ,将数据段相关链接写入linkdb  
  22. 5 ,生成indexes  
  23. 6 ,去重  
  24. 7 ,合并索引  
  25. 8 ,停止tomcat,释放操作索引的线程,Crawl更新线程后启动TOMCAT  
  26. #  
  27. # 参数设置  
  28. depth=5   
  29. threads=10   
  30. adddays=1   
  31. topN=30  #Comment  this  statement  if  you don't want to set topN value  
  32. # Arguments for  rm and mv  
  33. RMARGS="-rf"   
  34. MVARGS="--verbose"   
  35. # Parse arguments  
  36.   
  37. # 模式,yes启动,在索引操作时候会做备份,否则反之,直接更新索引!  
  38. safe=yes  
  39.   
  40. # nutch更目录  
  41. NUTCH_HOME=/cygdrive/e/java/CoreJava/IndexSearchAbout/nutch-1.0   
  42. # tomcat目录  
  43. CATALINA_HOME=/cygdrive/d/JavaTools/apache-tomcat-6.0 . 14   
  44.   
  45. if  [ -z  "$NUTCH_HOME"  ]  
  46. then  
  47.   echo runbot: $0  could not find environment variable NUTCH_HOME  
  48.   echo runbot: NUTCH_HOME=$NUTCH_HOME has been set by the script   
  49. else   
  50.   echo runbot: $0  found environment variable NUTCH_HOME=$NUTCH_HOME   
  51. fi  
  52.     
  53. if  [ -z  "$CATALINA_HOME"  ]  
  54. then  
  55.   echo runbot: $0  could not find environment variable NUTCH_HOME  
  56.   echo runbot: CATALINA_HOME=$CATALINA_HOME has been set by the script   
  57. else   
  58.   echo runbot: $0  found environment variable CATALINA_HOME=$CATALINA_HOME   
  59. fi  
  60.   
  61. if  [ -n  "$topN"  ]  
  62. then  
  63.   topN="-topN $topN"   
  64. else   
  65.   topN=""   
  66. fi  
  67.   
  68. steps=8   
  69.   
  70. 1 ,注入爬取入口  
  71. echo "----- Inject (Step 1 of $steps) -----"   
  72. $NUTCH_HOME/bin/nutch inject crawled/crawldb urls/url.txt  
  73.   
  74. 2 ,逐个深度进行爬取  
  75. echo "----- Generate, Fetch, Parse, Update (Step 2 o $steps) -----"   
  76. for ((i= 0 ; i <= $depth; i++))  
  77. do   
  78.   echo "--- Beginning crawl at depth `expr $i + 1` of $depth ---"   
  79.   $NUTCH_HOME/bin/nutch generate crawled/crawldb crawled/segments $topN /  
  80.       -adddays $adddays  
  81.   if  [ $? -ne  0  ]  
  82.   then  
  83.     echo "runbot: Stopping at depth $depth. No more URLs to fetcfh."   
  84.     break   
  85.   fi  
  86.   segment=`ls -d crawled/segments/* | tail -1 `  
  87.   
  88.   $NUTCH_HOME/bin/nutch fetch $segment -threads $threads  
  89.   if  [ $? -ne  0  ]  
  90.   then  
  91.     echo "runbot: fetch $segment at depth `expr $i + 1` failed."   
  92.     echo "runbot: Deleting segment $segment."   
  93.     rm $RMARGS $segment  
  94.     continue   
  95.   fi  
  96.   
  97.   $NUTCH_HOME/bin/nutch updatedb crawled/crawldb $segment  
  98. done  
  99.   
  100. 3 ,合并爬取下来的内容  
  101. echo "----- Merge Segments (Step 3 of $steps) -----"   
  102. #将多个数据段合并到一个数据中并且保存至MERGEDsegments  
  103. $NUTCH_HOME/bin/nutch mergesegs crawled/MERGEDsegments crawled/segments/*  
  104.   
  105.   
  106. #rm $RMARGS crawled/segments  
  107. rm $RMARGS crawled/BACKUPsegments  
  108. mv $MVARGS crawled/segments crawled/BACKUPsegments  
  109.   
  110. mkdir crawled/segments  
  111.   
  112. mv $MVARGS crawled/MERGEDsegments/* crawled/segments  
  113. rm $RMARGS crawled/MERGEDsegments  
  114.   
  115. 4 ,将数据段相关链接写入linkdb  
  116. echo "----- Invert Links (Step 4 of $steps) -----"   
  117. $NUTCH_HOME/bin/nutch invertlinks crawled/linkdb crawled/segments/*  
  118.   
  119. 5 ,生成indexes  
  120. echo "----- Index (Step 5 of $steps) -----"   
  121. $NUTCH_HOME/bin/nutch index crawled/NEWindexes crawled/crawldb crawled/linkdb crawled/segments/*  
  122.   
  123. 6 ,去重  
  124. echo "----- Dedup (Step 6 of $steps) -----"   
  125. $NUTCH_HOME/bin/nutch dedup crawled/NEWindexes  
  126.   
  127. 7 ,合并索引  
  128. echo "----- Merge Indexes (Step 7 of $steps) -----"   
  129. $NUTCH_HOME/bin/nutch merge crawled/NEWindex crawled/NEWindexes  
  130.   
  131. 8 ,停止tomcat,释放操作索引的线程,Crawl更新线程后启动TOMCAT  
  132. # 需要先停止tomcat,否则tomcat占用着索引文件夹index,不能对索引文件进行更新!(异常:什么文件以存在之类的,dir exists……)  
  133. echo "----- Loading New Index (Step 8 of $steps) -----"   
  134. #${CATALINA_HOME}/bin/shutdown.sh  
  135.   
  136. #如果是安全模式则先备份后删除索引  
  137. if  [  "$safe"  !=  "yes"  ]  
  138. then  
  139.   rm $RMARGS crawled/NEWindexes  
  140.   rm $RMARGS crawled/index  
  141. else   
  142.   rm $RMARGS crawled/BACKUPindexes  
  143.   rm $RMARGS crawled/BACKUPindex  
  144.   mv $MVARGS crawled/NEWindexes crawled/BACKUPindexes  
  145.   mv $MVARGS crawled/index crawled/BACKUPindex  
  146.   rm $RMARGS crawled/NEWindexes  
  147.   rm $RMARGS crawled/index  
  148. fi  
  149. #需要先删除旧索引(在上边已经完成)后在生成新索引  
  150. mv $MVARGS crawled/NEWindex crawled/index  
  151. #索引更新完成后启动tomcat  
  152. #${CATALINA_HOME}/bin/startup.sh  
  153.   
  154. echo "runbot: FINISHED: Crawl completed!"   
  155. echo ""  
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值