codecamp

(四)—Nutch crawl命令

Crawl为Nutch提供的用于一站式抓取的命令,用户只需要执行一条命令就可以完成抓取的全过程。

进入Nutch的主目录,今后我们大部分执行命令的操作都是在Nutch主目录完成的,而不是在Nutch的bin目录里,因为这样可以更方便地执行一些复杂的命令。查看一站式抓取命令:

bin/crawl

查看nutch命令:

bin/nutch

输入以上两个命令显示了它们各自的使用方法,后文会详细讲解一部分常用的命令。

查看crawl的使用方法:

bin/crawl
Usage: crawl [-i|--index] [-D "key=value"] <Seed Dir> <Crawl Dir> <Num Rounds>
-i|--indexIndexes crawl results into a configured indexer
-DA Java property to pass to Nutch calls
Seed DirDirectory in which to look for a seeds file
Crawl DirDirectory where the crawl/link/segments dirs are saved
Num RoundsThe number of rounds to run this crawl for

-i|index用于告知nutch将抓取的结果添加到配置的索引器中。

-D用于配置传递给Nutch调用的参数,我们可以将索引器配置到这里。

Seed Dir种子文件目录,用于存放种子URL,即爬虫初始抓取的URL。

Crawl Dir抓取数据的存放路径。

Num Rounds循环抓取次数

使用示例:

进入Nutch的runtime/local目录,新建一个urls文件夹:

cd apache-nutch-1.10/runtime/local
mkdir urls

在urls文件夹中新建一个存放url的种子文件:

touch urls/seed.txt

向urls/seed.txt添加初始抓取的URL:

echo http://www.163.com >> urls/seed.txt

开始抓取网页(这里需确保Solr已经启动,否则不能正常在Solr中建立索引,安装和配置参考Nutch 1.10入门教程(三)——Solr安装与配置):

bin/crawl -i -D solr.server.url=http://localhost:8983/solr/ urls/ TestCrawl/  2

这条命令中,-i告知爬虫将抓取的内容添加到给定的索引中,solr.server.url=http://localhost:8983/solr/是Solr索引器的地址,urls/为种子URL文件路径,TestCrawl为Nutch用于存储抓取数据的文件夹(包含URL、抓取的内容等数据),这里的参数2表示循环抓取两次

通过执行上面一条命令,就可以开始抓取网页了。

在浏览器中输入http://:8983/solr,选择collection1,就可以在里面通过关键字搜索到已经建立索引的内容。这里需要注意的是,爬虫并没有将指定URL的全部页面抓取下来,查看抓取情况的具体方法请参考后续教程。

(三)—Nutch Solr安装与配置
(五)—Nutch分步抓取
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }