设为首页 收藏本站
查看: 996|回复: 0

[经验分享] Apache Nutch 1.3 学习笔记一

[复制链接]

尚未签到

发表于 2015-7-31 13:00:03 | 显示全部楼层 |阅读模式
  1. Nutch是什么?
  Nutch是一个开源的网页抓取工具,主要用于收集网页数据,然后对其进行分析,建立索引,以提供相应的接口来对其网页数据进行查询的一套工具。其底层使用了Hadoop来做分布式计算与存储,索引使用了Solr分布式索引框架来做,Solr是一个开源的全文索引框架,从Nutch 1.3开始,其集成了这个索引架构

  2. 在哪里要可以下载到最新的Nutch?
  在下面地址中可以下载到最新的Nutch 1.3二进制包和源代码
http://mirror.bjtu.edu.cn/apache//nutch/

  3. 如何配置Nutch?
     3.1 对下载后的压缩包进行解压,然后cd $HOME/nutch-1.3/runtime/local
     3.2 配置bin/nutch这个文件的权限,使用chmod +x bin/nutch  
     3.3 配置JAVA_HOME,使用export JAVA_HOME=$PATH
  4. 抓取前要做什么准备工作?
  4.1 配置http.agent.name这个属性,如下

  


  •   

  •     http.agent.name  

  •     My Nutch Spider  

  •   
  
  
  4.2 建立一个地址目录,mkdir -p urls
     在这个目录中建立一个url文件,写上一些url,如

  


  • http://nutch.apache.org/  
  
  4.3 然后运行如下命令
  


  • bin/nutch crawl urls -dir crawl -depth 3 -topN 5  
  
注意,这里是不带索引的,如果要对抓取的数据建立索引,运行如下命令

  


  • bin/nutch crawl urls -solr http://localhost:8983/solr/ -depth 3 -topN 5  
  5. Nutch的抓取流程是什么样子的?
  5.1 初始化crawlDb,注入初始url
  


  • bin/nutch inject   

  • Usage: Injector   
  
  
在我本地运行这个命令后的输出结果如下:
  


  • lemo@debian:~/Workspace/java/Apache/Nutch/nutch-1.3$ bin/nutch inject db/crawldb urls/  

  •         Injector: starting at 2011-08-22 10:50:01  

  •         Injector: crawlDb: db/crawldb  

  •         Injector: urlDir: urls  

  •         Injector: Converting injected urls to crawl db entries.  

  •         Injector: Merging injected urls into crawl db.  

  •         Injector: finished at 2011-08-22 10:50:05, elapsed: 00:00:03  
  5.2 产生新的抓取urls
  


  • bin/nutch generate  

  • Usage: Generator [-force] [-topN N] [-numFetchers numFetchers] [-adddays numDays] [-noFilter] [-noNorm][-maxNumSegments num]  
  
本机输出结果如下:
  


  • lemo@debian:~/Workspace/java/Apache/Nutch/nutch-1.3$ bin/nutch generate db/crawldb/ db/segments  

  •         Generator: starting at 2011-08-22 10:52:41  

  •         Generator: Selecting best-scoring urls due for fetch.  

  •         Generator: filtering: true  

  •         Generator: normalizing: true  

  •         Generator: jobtracker is 'local', generating exactly one partition.  

  •         Generator: Partitioning selected urls for politeness.  

  •         Generator: segment: db/segments/20110822105243   // 这里会产生一个新的segment  

  •         Generator: finished at 2011-08-22 10:52:44, elapsed: 00:00:03  
  5.3 对上面产生的url进行抓取
  


  • bin/nutch fetch  

  • Usage: Fetcher [-threads n] [-noParsing]  
  
这里是本地的输出结果:
  


  • lemo@debian:~/Workspace/java/Apache/Nutch/nutch-1.3$ bin/nutch fetch db/segments/20110822105243/  

  •         Fetcher: Your 'http.agent.name' value should be listed first in 'http.robots.agents' property.  

  •         Fetcher: starting at 2011-08-22 10:56:07  

  •         Fetcher: segment: db/segments/20110822105243  

  •         Fetcher: threads: 10  

  •         QueueFeeder finished: total 1 records + hit by time limit :0  

  •         fetching http://www.baidu.com/  

  •         -finishing thread FetcherThread, activeThreads=1  

  •         -finishing thread FetcherThread, activeThreads=  

  •         -finishing thread FetcherThread, activeThreads=1  

  •         -finishing thread FetcherThread, activeThreads=1  

  •         -finishing thread FetcherThread, activeThreads=0  

  •         -activeThreads=0, spinWaiting=0, fetchQueues.totalSize=0  

  •         -activeThreads=0  

  •         Fetcher: finished at 2011-08-22 10:56:09, elapsed: 00:00:02  
  
我们来看一下这里的segment目录结构
  


  • lemo@debian:~/Workspace/java/Apache/Nutch/nutch-1.3$ ls db/segments/20110822105243/  

  • content  crawl_fetch  crawl_generate  
  5.4 对上面的结果进行解析
  


  • bin/nutch parse  

  • Usage: ParseSegment segment  
  
  本机输出结果:

  


  • lemo@debian:~/Workspace/java/Apache/Nutch/nutch-1.3$ bin/nutch parse db/segments/20110822105243/  

  • ParseSegment: starting at 2011-08-22 10:58:19  

  • ParseSegment: segment: db/segments/20110822105243  

  • ParseSegment: finished at 2011-08-22 10:58:22, elapsed: 00:00:02  
  
  我们再来看一下解析后的目录结构

  


  • lemo@debian:~/Workspace/java/Apache/Nutch/nutch-1.3$ ls db/segments/20110822105243/  

  • content  crawl_fetch  crawl_generate  crawl_parse  parse_data  parse_text  
  
  这里多了三个解析后的目录。
  
  5.5 更新外链接数据库
  


  • bin/nutch updatedb  

  • Usage: CrawlDb (-dir | ...) [-force] [-normalize] [-filter] [-noAdditions]  
  
本机输出结果:

  


  • lemo@debian:~/Workspace/java/Apache/Nutch/nutch-1.3$ bin/nutch updatedb db/crawldb/ -dir db/segments/  

  • CrawlDb update: starting at 2011-08-22 11:00:09  

  • CrawlDb update: db: db/crawldb  

  • CrawlDb update: segments: [file:/home/lemo/Workspace/java/Apache/Nutch/nutch-1.3/db/segments/20110822105243]  

  • CrawlDb update: additions allowed: true  

  • CrawlDb update: URL normalizing: false  

  • CrawlDb update: URL filtering: false  

  • CrawlDb update: Merging segment data into db.  

  • CrawlDb update: finished at 2011-08-22 11:00:10, elapsed: 00:00:01  
  
  这时它会更新crawldb链接库,这里是放在文件系统中的,像taobao抓取程序的链接库是用redis来做的,一种key-value形式的NoSql数据库。
5.6 计算反向链接

  


  • bin/nutch invertlinks  

  • Usage: LinkDb (-dir | ...) [-force] [-noNormalize] [-noFilter]  
  
  本地输出结果:

  


  • lemo@debian:~/Workspace/java/Apache/Nutch/nutch-1.3$ bin/nutch invertlinks db/linkdb -dir db/segments/  

  • LinkDb: starting at 2011-08-22 11:02:49  

  • LinkDb: linkdb: db/linkdb  

  • LinkDb: URL normalize: true  

  • LinkDb: URL filter: true  

  • LinkDb: adding segment: file:/home/lemo/Workspace/java/Apache/Nutch/nutch-1.3/db/segments/20110822105243  

  • LinkDb: finished at 2011-08-22 11:02:50, elapsed: 00:00:01  
  
  5.7 使用Solr为抓取的内容建立索引
  


  • bin/nutch solrindex  

  • Usage: SolrIndexer ( ... | -dir   
  
Nutch端的输出如下:

  


  • lemo@debian:~/Workspace/java/Apache/Nutch/nutch-1.3$ bin/nutch solrindex http://127.0.0.1:8983/solr/ db/crawldb/ db/linkdb/ db/segments/*  
  


  • SolrIndexer: starting at 2011-08-22 11:05:33  
  


  • SolrIndexer: finished at 2011-08-22 11:05:35, elapsed: 00:00:02  
  
Solr端的部分输出如下:
  


  • INFO: SolrDeletionPolicy.onInit: commits:num=1  

  •        commit{dir=/home/lemo/Workspace/java/Apache/Solr/apache-solr-3.3.0/example/solr/data/index,segFN=segments_1,version=1314024228223,generation=1,filenames=[segments_1]  

  • Aug 22, 2011 11:05:35 AM org.apache.solr.core.SolrDeletionPolicy updateCommits  

  • INFO: newest commit = 1314024228223  

  • Aug 22, 2011 11:05:35 AM org.apache.solr.update.processor.LogUpdateProcessor finish  

  • INFO: {add=[http://www.baidu.com/]} 0 183  

  • Aug 22, 2011 11:05:35 AM org.apache.solr.core.SolrCore execute  

  • INFO: [] webapp=/solr path=/update params={wt=javabin&version=2} status=0 QTime=183  

  • Aug 22, 2011 11:05:35 AM org.apache.solr.update.DirectUpdateHandler2 commit  

  • INFO: start commit(optimize=false,waitFlush=true,waitSearcher=true,expungeDeletes=false)  
  
5.8 在Solr的客户端查询
在浏览器中输入

  


  • http://localhost:8983/solr/admin/  
  
查询条件为baidu
  输出的XML结构为
  如果你要以HTML结构显示把Solr的配置文件solrconfig.xml中的content改为如下就可以

  


  •       

  •   

  • 0  

  • 0  

  •   

  • on  

  • 0  

  • baidu  

  • 2.2  

  • 10  

  •   

  •   

  •   

  •   

  • 1.0660036  

  • 7be5cfd6da4a058001300b21d7d96b0f  

  • http://www.baidu.com/  

  • 20110822105243  

  • 百度一下,你就知道  

  • 2011-08-22T14:56:09.194Z  

  • http://www.baidu.com/  

  •   

  •   

  •   
  
  


  •   
6 参考
  http://wiki.apache.org/nutch/RunningNutchAndSolr
  
  作者:http://blog.iyunv.com/amuseme_lu
  
  
  相关文章阅读及免费下载:
  
  Apache Nutch 1.3 学习笔记目录
  
  Apache Nutch 1.3 学习笔记一
  
  Apache Nutch 1.3 学习笔记二
  
  Apache Nutch 1.3 学习笔记三(Inject)
  
  Apache Nutch 1.3 学习笔记三(Inject CrawlDB Reader)
  
  Apache Nutch 1.3 学习笔记四(Generate)
  
  Apache Nutch 1.3 学习笔记四(SegmentReader分析)
  
  Apache Nutch 1.3 学习笔记五(FetchThread)
  
  Apache Nutch 1.3 学习笔记五(Fetcher流程)
  
  Apache Nutch 1.3 学习笔记六(ParseSegment)
  
  Apache Nutch 1.3 学习笔记七(CrawlDb - updatedb)
  
  Apache Nutch 1.3 学习笔记八(LinkDb)
  
  Apache Nutch 1.3 学习笔记九(SolrIndexer)
  
  Apache Nutch 1.3 学习笔记十(Ntuch 插件机制简单介绍)
  
  Apache Nutch 1.3 学习笔记十(插件扩展)
  
  Apache Nutch 1.3 学习笔记十(插件机制分析)
  
  Apache Nutch 1.3 学习笔记十一(页面评分机制 OPIC)
  
  Apache Nutch 1.3 学习笔记十一(页面评分机制 LinkRank 介绍)
  
  Apache Nutch 1.3 学习笔记十二(Nutch 2.0 的主要变化)
  
  更多《Apache Nutch文档》,尽在开卷有益360 http://www.docin.com/book_360

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-92761-1-1.html 上篇帖子: Could not initialize class org.apache.log4j.LogManager 报错 下篇帖子: apache优化配置
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表