星期日, 十一月 26, 2006

Nutch Crawl 分析

初始准备    
  mkdir db 建立目录存放web database
  mkdir segments  
  bin/nutch admin db -create 建一个新的空的数据库
第一轮抓取    
  bin/nutch inject db -dmozfile content.rdf.u8 -subset 3000 从DMOZ列表中取得URL并加入数据库
  bin/nutch generate db segments 根据数据库内容,生成一个抓取列表(fetchlist)
  s1=`ls -d segments/2* | tail -1` 刚才生成的抓取列表放在最后一个目录中,取其名
  bin/nutch fetch $s1 利用机器人抓页面
  bin/nutch updatedb db $s1 利用抓取结果更新数据库
第二轮抓取    
  bin/nutch analyze db 5 迭代5次分析页面的链接
  bin/nutch generate db segments -topN 1000 将排行前1000个URL生成新的抓取列表
  s2=`ls -d segments/2* | tail -1` 执行抓取、更新、并迭代2次分析链接
  bin/nutch fetch $s2  
  bin/nutch updatedb db $s2  
第三轮抓取    
  bin/nutch analyze db 2  
  bin/nutch generate db segments -topN 1000  
  s3=`ls -d segments/2* | tail -1`  
  bin/nutch fetch $s3  
  bin/nutch updatedb db $s3  
  bin/nutch analyze db 2 (为下一次做准备?)
索引并去重    
  bin/nutch index $s1  
  bin/nutch index $s2  
  bin/nutch index $s3  
  bin/nutch dedup segments dedup.tmp  
重启tomcat    
  catalina.sh start 在./segments所在的目录中启动

 

步骤解释:

假设存放抓取信息的目录为crawl

1. 创建空的webdb。org.apache.nutch.tools.WebDBAdminTool crawl –create

    在crawl下建立db\webdb目录。

2. 注入url。
org.apache.nutch.db.WebDBInjector crawl -urlfile conf/urls.txt

    这时会对db\webdb注入urls.txt文件中所有的url。(存入db\webdb\pagesByMD5和db\webdb\pagesByURL中)

3. 创建 fetchlist,记录待抓取的页面链接。
org.apache.nutch.tools.FetchListTool crawl crawl/segments

    获取webdb中的链接和上层的页面链接,计算(待存新链接)=(上层的页面链接所指页面的新链接)-(webdb中的已有链接)。假如有crawl\segments\20061114141330目录,首先在目录下建fetchlist目录,然后在fetchlist\data文件存入该层待存新链接。

4. 抓取页面fetch。
org.apache.nutch.fetcher.Fetcher crawl\segments\20061114143222

    通过读取fetchlist中的页面链接开始抓取页面内容,分别存入到crawl\segments\20061114143222下的content,fetcher, parse_data, parse_text目录中。

5. 更新数据库,把获取到的页面的url链接和page内容存入数据库

    org.apache.nutch.tools.UpdateDatabaseTool crawl crawl\segments\20061114143222

    更新crawl\db\webdb,存入fetch时抓来的页面的url和content。

6. 链接分析

    org.apache.nutch.tools.LinkAnalysisTool crawl 3

没有评论: