Skip to content

Instantly share code, notes, and snippets.

@xcaspar
Created July 21, 2015 07:49
Show Gist options
  • Save xcaspar/c5c1c95c6be34bcd6348 to your computer and use it in GitHub Desktop.
Save xcaspar/c5c1c95c6be34bcd6348 to your computer and use it in GitHub Desktop.

Nutch介绍

@(Xcaspar)[nutch]

介绍

Nutch是一个爬虫和检索于一体的一个可扩展、高性能的框架。目前有两种版本:最新的分别是v1.8和v2.2.1,两者的区别是底层存储不同,1.X版本基于Hadoop(目前1.2.0版本)架构的,底层存储使用HDFS文件系统。而2.x采用Apache的Apache Gora ORM框架进行存储访问,支持HBase、MySQL等。 两者都有个共同点:必须自己编译源码文件。
说到编译,Nutch是Apache的一个项目,所以项目的编译也是采用自己的ant进行build,jar包管理使用ivy。项目编译还算简单,大体步骤如下:

  • 由于下载的包中缺少代码质量检查的sonar包,但是build.xml文件涉及到,所以,你要自己下载sonar-ant-task jar包,然后更改build.xml中涉及到sonar task的classpath,将地址指向包的位置,比如:
  • 然后ant,此阶段所需时间较长。
  • build之后,默认会有个runtime文件夹,里面包含deploy和local文件夹,分别是部署和本地运行nutch和crawl文件以及相应的配置文件。
  • 配置文件很多,有数据存储相关的gora*文件,网页抓取、过滤相关的正则文件等。核心的是nutch-default.xml和nutch-site.xml文件,可保持nutch-default.xml不变,在nutch-site.xml增加内容。
  • 配置好之后就可以进行网页抓取。先创建一个文件夹,在文件夹中创建一个文本,存放要抓取的网页地址,如果也对网址进行过滤的话,可以在 配置文件regex-urlfilter.txt等filter文本中进行添加过滤。nutch是网页抓取的核心工具,crawl只是一个对nutch命令集的一个封装,包括比较完整的抓取过程:
    nutch inject urls/ 加载网址
    nutch generate crawlId 抓取页面地址
    nutch fetch crawlId 下载所抓到的网址内容
    nutch parse crawlId 解析内容
    nutch updatedb 更新数据

####总结 nutch可以快速的抓取页面以及利用solr快速建立索引,进行快速查找。但是nutch一个不方便的地方就是不能精准抓取,比如我想抓取淘宝物品的价格就不方便了,要自己写组件进行页面内容过滤。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment