crawl:one-step crawler for intranets 一站式的爬取。 也就是将 inject,generate,fetch,parse,updatedb这些都合并到这一个操作中完成。那就从crawl开始研究吧。
crawl类在 org.apache.nutch.crawl.Crawl
先看main方法:
public static void main(String args[]) throws Exception { //读取配置文件,包括nutch-default.xml,nutch-site.xml Configuration conf = NutchConfiguration.create(); //对hadoop的一些配置设置,及解析用户输入放入数组中 int res = ToolRunner.run(conf, new Crawl(), args); System.exit(res); }
接着会执行run方法:
//抓取的数据存放的默认的根目录 Path dir = new Path("crawl-" + getDate()); //fetch抓取的时候执行的线程数,默认值为10 int threads = getConf().getInt("fetcher.threads.fetch", 10); //mapred任务 JobConf job = new NutchJob(getConf()); //注入url到crawldb的对象 Injector injector = new Injector(getConf()); //生成抓取列表的对象 Generator generator = new Generator(getConf()); //抓取网页的对象 Fetcher fetcher = new Fetcher(getConf()); //解析抓取内容 ParseSegment parseSegment = new ParseSegment(getConf()); //抓取url相关信息存放的地方 CrawlDb crawlDbTool = new CrawlDb(getConf()); LinkDb linkDbTool = new LinkDb(getConf()); // initialize crawlDb //将rootUrlDir下的url信息注入crawlDb中,只需要最初的时候执行一次即可 injector.inject(crawlDb, rootUrlDir); int i; //抓取depth次 for (i = 0; i < depth; i++) { // generate new segment //生成抓取列表,每次抓取为一个文件夹,以当前时间为文件名 Path[] segs = generator.generate(crawlDb, segments, -1, topN, System .currentTimeMillis()); if (segs == null) { LOG.info("Stopping at depth=" + i + " - no more URLs to fetch."); break; } //根据生成的抓取列表,对网页抓取 fetcher.fetch(segs[0], threads); // fetch it /* * 这里根据nutch-default.xml中的 fetcher.parse属性做判断,默认为false。 * false:表示在fetcher的阶段不对网页内容做解析,而是分开步骤在fetch完成后专门解析; * true:表示在fetcher阶段就对网页内容做解析。 */ if (!Fetcher.isParsing(job)) { //解析抓取的网页 parseSegment.parse(segs[0]); // parse it, if needed } //更加解析后数据更新crawldb crawlDbTool.update(crawlDb, segs, true, true); // update crawldb } if (i > 0) { //链接反转 linkDbTool.invert(linkDb, segments, true, true, false); // invert links
//如果有solr,对解析的页面生成索引等 if (solrUrl != null) { // index, dedup & merge FileStatus[] fstats = fs.listStatus(segments, HadoopFSUtil.getPassDirectoriesFilter(fs)); SolrIndexer indexer = new SolrIndexer(getConf());
可以看到,crawl就是将各个步骤整合在一个类中执行了,所以后面需要对每个具体的操作来进行分析。
相关推荐
Apache Nutch 是一个...总结来说,Apache Nutch 1.3 是一个强大的网络爬虫框架,其源码包为开发者提供了深入理解爬虫技术的宝贵资源。无论是用于学术研究还是实际项目开发,Nutch 1.3 都是值得学习和探索的优秀工具。
主要的源代码文件位于`src/java`目录下,按照包结构组织,例如`org.apache.nutch.crawl`、`org.apache.nutch.indexer`和`org.apache.nutch.parse`等。 2. **配置文件**:在`conf`目录下,有默认的Nutch配置文件,如...
Apache Nutch是一个开源的Web爬虫项目,用于抓取互联网上的网页并建立索引,是大数据和搜索引擎领域的重要工具。Nutch 2.3版本是其历史中的一个重要里程碑,提供了许多改进和优化,使得它在大规模数据处理和分布式...
通过学习和研究Nutch源码,开发者不仅可以了解网络爬虫的工作流程,还可以学习到分布式计算、文本处理、搜索算法等多方面的知识。这对于构建自己的搜索引擎系统,或者在大数据领域进行深度开发有着极大的帮助。同时...
例如,`bin/nutch crawl urls -dir crawl -depth 2 -topN 10`会启动一个深度为2的爬取,并返回前10个结果。 5. **调试和扩展**:利用IDE的调试功能,你可以对Nutch的代码进行逐行分析,理解其工作原理,或者在需要...
接着,`conf.addDefaultResource("crawl-tool.xml")` 加载了 Nutch 的特定配置文件 `crawl-tool.xml`,这个文件定义了 Nutch 抓取工具的特定设置。 然后,`NutchJob(conf)` 被用来创建一个 `JobConf` 对象,这是 ...
具体而言,会加载`nutch-default.xml`、`crawl-tool.xml`(可选)和`nutch-site.xml`这三个配置文件,分别代表默认配置、爬虫特有配置和用户自定义配置。这些配置文件对Nutch的行为和性能具有决定性的影响。 #### ...
- 编辑 `conf/crawl-urlfilter.txt` 文件,去掉对所有 URL 的限制,如注释掉 `(+^http://([a-z0-9]*\.)*MY.DOMAIN.NAME/)` 这一行。 - 修改 `nutch-site.xml` 文件,在 `<configuration>` 标签内添加以下属性: -...
- **下载Nutch源码**:访问Apache官方网站或其镜像站点,下载Nutch-0.9源码并解压缩至本地目录。 - **创建Java Project**:在Eclipse中创建一个新的Java Project,命名为"Nutch",并选择“Create project from ...
Nutch 是一个开源的全文搜索引擎项目,它基于 Lucene 构建,旨在...总的来说,Nutch 是一个强大的、可扩展的搜索引擎平台,通过深入学习其源码,可以理解搜索引擎的基本工作原理,以及如何构建分布式爬虫和索引系统。
**二、获取Nutch源码** 1. 访问Apache Nutch官方网站(http://nutch.apache.org/releases.html),下载Nutch 2.3.1的源码包。 2. 解压下载的源代码到你选择的工作目录,例如`/usr/local/src/nutch-2.3.1`。 **三、...
特别地,Nutch中的Crawl和Fetch阶段展示了如何管理URL队列,以及如何决定何时重新抓取网页。 在学习Lucene和Nutch的源码时,你会遇到以下几个关键概念: 1. **分词**:Lucene使用Analyzer对输入文本进行分词,不同...
Nutch是Apache软件基金会开发的一款开源搜索引擎项目,主要用于抓取、索引和搜索Web内容。作为初学者,了解和掌握Nutch的相关知识是探索搜索引擎技术的第一步。本篇将深入探讨Nutch的基本概念、功能、架构以及如何...
- 修改配置文件,如 `nutch-site.xml` 和 `crawl-urlfilter.txt`,以适应你的需求。 - **借助 Cygwin 使用 Nutch**: - 安装 Cygwin,这是一个模拟 Linux 环境的工具,使得可以在 Windows 上运行 Linux 命令行...
要使用Nutch 1.2,你需要先安装Hadoop环境,然后编译Nutch源码,配置相应的参数,设置爬取种子,启动爬虫,最后进行索引和搜索。这个过程涉及的文件包括`conf`目录下的配置文件,如`nutch-site.xml`,以及`bin`目录...
选择“Run As > Java Application”,并在“Arguments”选项卡中设置程序参数,如`Program arguments: urls-dir crawl-depth 3 topN 50`,以及虚拟机参数`VM arguments: -Dhadoop.log.dir=logs -Dhadoop.log.file=...
- 打开命令行,导航到Nutch源码目录,运行`mvn clean install -DskipTests`命令,这将编译Nutch并创建可执行的JAR文件。 4. **配置Nutch**: - 修改`conf/nutch-site.xml`文件,设置抓取策略、存储路径、抓取间隔...
nutcher 是 Apache Nutch 的中文教程,在... Nutch流程控制源码详解(bin/crawl中文注释版) Nutch教程——URLNormalizer源码详解 Nutch参数配置——http.content.limit 文档截图:
- 修改`crawl-urlfilter.txt`文件中的正则表达式,以便爬取特定网站。 - 在项目根目录下创建`urls`文件夹,并在其中创建`url.txt`文件,包含要爬取的URL。 - 最后,配置Java项目的运行参数,并通过MyEclipse的...
- **执行抓取命令**: 使用 `bin/nutch crawl` 命令开始抓取。 - **测试结果**: 检查抓取的数据是否符合预期。 - **Intranet Recrawl**: 对已抓取的内部网进行周期性的重新抓取。 - **爬行全网**: - **数据集...