第七周总结
这周简单学习了一下Nutch爬取的内容。
简介
Apache的子项目之一,属于Lucene项目下的子项目。
Nutch是一个类似Google通用搜索引擎的解决方案,基于Hadoop任务的分布式处理模型保证了系统的性能,类似Eclipse的插件机制保证了系统的可客户化,而且很容易集成到自己的应用之中。
总 体上Nutch可以分为2个部分:抓取部分和搜索部分。抓取程序抓取页面并把抓取回来的数据做成反向索引,搜索程序则对反向索引搜索回答用户的请求。抓取 程序和搜索程序的接口是索引,两者都使用索引中的字段。抓取程序和搜索程序可以分别位于不同的机器上,下面详细介绍一下抓取部分。
抓取过程

抓取是一个循环的过程:抓取工具从WebDB中生成了一个 fetchlist 集合;抓取工具根据fetchlist从网络上下载网页内容;解析工具发现的新链接更新WebDB;然后再生成新的fetchlist;周而复始。这个抓 取循环在nutch中经常指: generate/fetch/parse/update 循环。
一般来说同一域名下的 url 链接会被合成到同一个 fetchlist。这样做的考虑是:当同时使用多个工具抓取的时候,不会产生重复抓取的现象。Nutch 遵循 Robots Exclusion Protocol, 可以用robots.txt 定义保护私有网页数据不被抓去。
上面这个抓取工具的组合是Nutch的最外层的,也可以直接使用更底层的工具,自己组合这些底层工具的执行顺序达到同样的结果。这是Nutch吸引人的地方。下面把上述过程分别详述一下,括号内就是底层工具的名字:
-
把开始抓取的跟Url 放入WebDb (inject)。
-
从WebDb的新 segment 中生成 fetchlist (generate)。
-
根据 fetchlist 列表抓取网页的内容 (fetch)。
-
根据抓取回来的网页链接url
-
更新 WebDB (updatedb)。
-
重复上面2-5个步骤直到到达指定的抓取层数。
功能
-
基于Hadoop的分布式系统;
-
存储层剥离,支持存储HBase, Cassandra, MySql等数据库
-
基于插件式设计,扩展和定制比较方便
-
支持网页解析和索引,可以对接至Solr,搭建通用的搜索引擎
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Ollama——大语言模型本地部署的极速利器
· 使用C#创建一个MCP客户端
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· Windows编程----内核对象竟然如此简单?
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用