nutch配置过程
- 格式:doc
- 大小:324.00 KB
- 文档页数:8
Nutch配置文档目录1 JDK、Tomcat、Cygwin的配置 (2)2 Nutch1.0的基本配置 (2)2.1准备Nutch源码包 (2)2.2建立java项目 (2)2.3下载jid3lib-0.5.1.jar和rtf-parser.jar (2)2.4修改Nutch\conf (3)2.5动态网址的抓取 (3)3 Nutch1.0的优化配置 (4)3.1增加Summary长度 (4)3.2Nutch搜索高亮 (4)3.3提高Nutch抓取速度 (5)3.3.1 修改fetcher.threads.per.host: (5)这个值允许同一时刻访问一台主机的最大线程数,改成15 (5)3.3.2 修改fetcher.server.delay (5)修改conf/nutch-default.xml中的etcher.server.delay,改成1.0 在抓取时最高能到到3M/s (5)4 Nutch1.0中文分词IKAnalyzer的配置 (5)4.1准备工作 (5)4.2让Nutch支持中文分词 (5)4.3添加IKAnalyzer (6)4.4重新编译Nutch (6)5 运行Nutch1.0 (6)5.1配置好后,启动工程 (6)5.1.1 通过cygwin启动 (6)5.1.2 通过Myeclipse启动 (7)5.2Luke查看建立的索引 (7)6 Nutch1.0在Tomcat下的配置 (8)6.1解压nutch-1.0.war (8)6.2分页效果的实现 (8)6.3查询 (11)6.4乱码问题 (12)7 fetcher阶段之后,各个阶段的调用命令 (13)1JDK、Tomcat、Cygwin的配置2Nutch1.0的基本配置2.1准备Nutch源码包项目中使用的是nutch-1.0版本,到/下载nutch-1.0.tar.gz,下载后直接解压缩即可2.2建立java项目file->new->java project->从已有的项目导入点击next,将conf文件夹修改成Default output folder Browse选择nutch\conf确定即可,这时,一般确定以后会把conf中以前的文件清空掉,在重新把nutch压缩包里的conf下的所有文件复制到工程的conf下,千万不要把新生成的配置文件删掉2.3下载jid3lib-0.5.1.jar和rtf-parser.jar右键项目properties,添加外部jar,若在nutch-1.0下还要一般的工程都会有两个错误,nutch的official 1.0 release版本中,这两个问题因为licensing issues没有修复。
Nutch 的配置Nutch的配置文件主要有三类:1.Hadoop的配置文件,Hadoop-default.xml和Hadoop-site.xml。
2.Nutch的配置文件,Nutch-default.xml和Nutch-site.xml。
3.Nutch的插件的配置文件,这些插件的配置文件在加载插件的时候由插件自行加载,如filter的配置文件。
配置文件的加载顺序决定了配置文件的优先级,先加载的配置文件优先级低,后加载的配置文件优先级高,优先级低的配置会被优先级高的配置覆盖。
因此,了解Nutch配置文件加载的顺序对学习使用Nutch是非常必要的。
下面我们通过对Nutch源代码的分析来看看Nutch加载配置文件的过程。
Nutch1.0使用入门(一)介绍了Nutch主要命令--crawl的使用,下面我们就从crawl的main类(org.apache.nutch.crawl.Crawl)的main方法开始分析:Crawl类main方法中加载配置文件的源码如下:Configuration conf = NutchConfiguration.create();conf.addResource("crawl-tool.xml");JobConf job = new NutchJob(conf);上面代码中,生成了一个NutchConfiguration类的对象,NutchConfiguration 是Nutch管理自己配置文件的类,Configuration是Hadoop管理自己配置文件的类。
下面我们进入NutchConfiguration类的create()方法。
/** Create a {@link Configuration} for Nutch. */public static Configuration create() {Configuration conf = new Configuration();addNutchResources(conf);return conf;}create()方法中,先生成了一个Configuration类的对象。
Nutch环境搭建1. 环境准备HOST:Ubuntu12.04LTSJDK: jdk-7u45-linux-i586.rpmNutch:apache-nutch-1.7-bin.tar.gzSolr:solr-4.6.0-src.tgz⼯作⽬录: /home/zephyr/1.1JDK安装为了下载快点,⼀下脑残下了rpm.可Ubuntu上没有rpm⼯具apt-get install rpm 后rpm -ivh jdk-7u45-linux-i586.rpm提⽰要使⽤alienapt-get install alien alien -i jdk-7u45-linux-i586.rpmalien -d jdk-7u45-linux-i586.rpm ⽣成deb⽂件不可⽤⽆奈,重新使⽤apt-get install oracle-java7-installer* 直接使⽤失败add-apt-repository ppa:webupd8team/javaapt-get updateapt-get install oracle-java7-installer到/etc/profile ⽂件的最后增加上以下⼏⾏export JAVA_HOME=/usr/java/jdk1.7.0_45export CLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jarexport NUTCH_HOME=/home/zephyr/apache-nutch-1.7export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$NUTCH_HOME/bin:$PATH1.2Tomcat安装apt-get install tomcat7 下载tomcat修改tomcat的端⼝使⽤情况为vi /etc/tomcat7/server.xml<Connector port="8088" protocol="HTTP/1.1"connectionTimeout="20000"URIEncoding="UTF-8"redirectPort="8443" />/etc/init.d/tomcat7 start1.3Nutch 安装⼯作⽬录下解压 tar xzvf apache-nutch-1.7-bin.tar.gz测试Nutch 是否能正常⼯作在urls⽬录touch⼀个seed.txt echo / >> seed.txt修改conf/regex-urlfilter.txt# accept anything else+.为+^http://([a-z0-9]*\.)*/编辑conf/nutch-site.xml<property><name></name><value>My Nutch Spider</value></property>.nutch crawl ../urls -dir ../test -depth 1 -topN 10报错java/lang/NoClassDefFoundError: java/lang/ObjectException in thread "main" ng.InternalError: internal error: SHA-1 not available修正JDKcd /usr/java/jdk1.7.0_45/lib 将pack结尾的⽂件都转成 jar 如:unpack200 tools.pack tools.jar/usr/java/jdk1.7.0_45/jre/lib 也做相同操作再操作成功。
Nutch 索引(一)Nutch的总体结构Nutch从总体上看来,分为三个主要的部分:爬行、索引和搜索。
以下图片为Nutch工作的示意图。
图1 Nutch工作流程步骤1-2-3-4-5属于爬行部分,编制索引时索引过程,用户查询和Lucene 检索是搜索过程。
(二)爬行的流程:1)首先建立空的URL数据库,把起始的urls存入URL数据库中;2)根据URL数据库中的数据在新创建的segment生成fetchlist,存放待爬取的urls;3)根据fetchlist数据对internet中的相关网页爬行抓取;4)把步骤3抓取的数据解析成纯文本与数据;5)从步骤4中解析的数据中提取新的urls,更新URL数据库。
之后步骤2—5循环。
(三)Nutch索引部分:1)Nutch 是基于Lucene的。
Lucene为Nutch 提供了文本索引和搜索的API。
2)Nutch的索引是以增量的方式进行的。
新建去重合并新建:Nutch索引首先对本次抓取的数据进行索引(因为以前的数据被索引过,不需要再重新索引)。
每次抓取会在indexes中建立临时目录存放新创建的索引,indexes目录中存放的是本次的索引,index 目录中存放现有的索引。
新建程序结构:Indexer类的index()函数负责创建一个job,进行索引操作。
index函数调用IndexerMapReduce类的静态函数initMRJob()初始化该job,initMRJob负责将需要建立索引的数据通过FileInputFormat.addInputPath(job, p1)操作,加载到job的输入路径中,所以可以通过修改iniMRJob()函数来控制建立索引的输入数据,即只将本次爬取的数据作为输入来避免重复建立索引。
去重:对新的建立的索引和以前建立的索引进行去重操作,(其中如果新抓取的url已经存在索引,则去掉重复的)。
Indexes目录下有很多个索引,每个索引一个目录。
Nutch核心流程分析Crawl类的时序图流程如下:1. 建立初始URL 集2. 将URL 集注入crawldb 数据库---inject3. 根据crawldb 数据库创建抓取列表---generate4. 执行抓取,获取网页信息---fetch5. 更新数据库,把获取到的页面信息存入数据库中---updatedb6. 重复进行3 ~5 的步骤,直到预先设定的抓取深度。
--- 这个循环过程被称为“ 产生/ 抓取/ 更新” 循环7. 根据sengments 的内容更新linkdb 数据库---invertlinks8. 建立索引---index一、 org.apache.nutch.crawl.Injector:1,注入url.txt2,url标准化3,拦截url,进行正则校验(regex-urlfilter.txt)4,对符URL标准的url进行map对构造<url, CrawlDatum>,在构造过程中给CrawlDatum初始化得分,分数可影响url host的搜索排序,和采集优先级! 5,reduce只做一件事,判断url是不是在crawldb中已经存在,如果存在则直接读取原来CrawlDatum,如果是新host,则把相应状态存储到里边(STATUS_DB_UNFETCHED(状态意思为没有采集过))二、org.apache.nutch.crawl.Generator:1,过滤不及格url (使用url过滤插件)2,检测URL是否在有效更新时间里3,获取URL metaData,metaData记录了url上次更新时间4,对url进行打分5,将url载入相应任务组(以host为分组)6,计算url hash值7,收集url, 直至到达 topN 指定量三、 org.apache.nutch.crawl.Fetcher:1,从segment中读取<url, CrawlDatum>,将它放入相应的队列中,队列以queueId为分类,而queueId是由协议://ip 组成,在放入队列过程中,如果不存在队列则创建(比如javaeye的所有地址都属于这个队列:http://221.130.184.141) --> queues.addFetchItem(url, datum);2,检查机器人协议是否允许该url被爬行(robots.txt) -->protocol.getRobotRules(fit.url, fit.datum);3,检查url是否在有效的更新时间里 --> if (rules.getCrawlDelay() > 0) 4,针对不同协议采用不同的协议采用不同机器人,可以是http、ftp、file,这地方已经将内容保存下来(Content)。
1.创建一个新的WebDb (admin db -create);2.将抓取起始URLs写入WebDB中(inject);3.根据WebDB生成fetchlist并写入相应的segment(generate);4.根据fetchlist中的URL抓取网页(fetch).;5.根据抓取网页更新WebDb (updatedb).通过3—5这个循环就可以实现Nutch的深度抓取。
在nutch爬虫运行后在webdb文件夹下一共产生如下五个文件:linksByMD5 linksByURL pagesByMD5 pagesByURL statsStats文件用来存放爬虫爬行后的版本信息,处理网页数量,连接数量;pagesByURL等其余四个文件夹下均有两个文件――index和data,其中data文件用来存放有序的key/value对,排序是通过选择不同的key和comparator来改变的,当然里面会有一些其他信息,比如在pagesByURL中,就每隔一定长度的key /value对放入一个用来定位的信息(syn);index文件用来存放索引,但是这个索引文件也是一个有序的,这个里面存放的是key和位置信息,但是在data文件中出现的key在这个index中都能找到的,它为了节省空间,实施了每隔一段key/value 建立一条索引,这样在查找的时候,因为是有序的,所以采用2分查找,如果找不到,则返回最后时候的最小的位置信息,这个位置离我们要找的目标是相当近的,然后在data文件的这个位置向前找就可以很快找到了nutch维持这个webdb的方式是,在填加,删除网页或者连接时,并不是直接向这个webdb中填加网页或者连接,而是在WebDBWriter 中的内部类PageInstructionWriter或者LinkInstructionWriter中填加一条对网页操作的命令,然后最后对存放的命令进行排序去重,最后将这个命令与现有的webdb中存放的网页数据进行合并;Fetcher类是进行实际网页抓取时候运行的类,爬虫产生的文件或文件夹都是由这个类产生的,Nutch提供了选项―是否对抓回的网页进行parse(解析),如果这个选项设置为false,将没有parseddata和parsedtext这两个文件夹。
Nutch实验过程与学习心得1.1安装Nutch1.1.1实验环境Linux操作系统,采用的是VMWare虚拟机下的Ubuntu 10.10系统。
1.1.2安装的必要软件1.JDK,本人采用的是JDK1.6版本,为了方便大家学习,给出软件的下载链接,在下载时,注意选择linux下的版本,不要选择windows的版本,此次实验下载的是jdk-6u13-linux-i586.bin。
/technetwork/java/javase/downloads/index.html2.Tomcat,采用的是apache-tomcat-6.0版本,此次实验选择的是apache-tomcat-6.0.32.tar.gz。
/3.Nutch, 采用的是apache-nutch-1.1版本,此次实验选择的是apache-nutch-1.1-bin.tar.gz。
/4.最后尽量采用较新的版本,否则,可能出现其他问题。
1.1.3软件的安装方法和安装过程1.安装JDK1)将下载好的jdk的bin文件放到虚拟机环境下,例如,可以放在/home目录下(虚拟机和主机之间的文件传递可以简单通过U盘或移动硬盘,当然还有其他很多种方法,可自行选择)。
2)到jdk的bin文件目录下,执行命令,安装jdk。
安装命令:[root@localhost -]#sh jdk-6u13-linux-i586.bin一直按Enter键,知道需要选择yes or no,选择也是即可。
(注意:如果对于linux不太熟悉,最简单的方法就是在操作界面中启动终端,应用程序->附件->终端,然后即可再次之下输入命令行了。
一般情况下,进入终端后的结果:andy是本人linux系统下用户名,每个人都不同。
先获取root权限,命令如下:andy@andy-virtual-machine:~$ sudo –sH并且需要输入password,输入的password是不会在终端中显示的,命令执行后的结果:此时,已获得root权限。
程序运行环境配置1.开发环境配置将nutch-1.0.jar和nutch\lib下所有jar文件都配置在Referenced Libraries下即可其中c3p0-0.9.1是数据库池管理的jar,mysql-connector-java-5.1.6-bin.jar为mysql的jar。
2.运行中几个错误的解决Nutch1.0在eclipse中运行问题之解决文章分类:Java编程今天按照前面几篇文章所述之操作解决了程序中的报错,但是在调试运行过程中会出现如果错误.本问题主要针对windows操作系统.问题一:现贴出:2010-03-25 21:42:33,937 WARN fs.FileSystem (FileSystem.java:<init>(1440)) - uri=file:/// javax.security.auth.login.LoginException: Login failed: Cannot run program "whoami": CreateProcess error=2, ?????????atorg.apache.hadoop.security.UnixUserGroupInformation.login(UnixUserGroupInformation.java:25 0)atorg.apache.hadoop.security.UnixUserGroupInformation.login(UnixUserGroupInformation.java:27 5)atorg.apache.hadoop.security.UnixUserGroupInformation.login(UnixUserGroupInformation.java:25 7)at erGroupInformation.login(UserGroupInformation.java:67)at org.apache.hadoop.fs.FileSystem$Cache$Key.<init>(FileSystem.java:1438)at org.apache.hadoop.fs.FileSystem$Cache.get(FileSystem.java:1376)at org.apache.hadoop.fs.FileSystem.get(FileSystem.java:215)at org.apache.hadoop.fs.FileSystem.get(FileSystem.java:120)at org.apache.nutch.crawl.Crawl.main(Crawl.java:84)2010-03-25 21:42:34,593 INFO crawl.Crawl (Crawl.java:main(87)) - crawl started in: crawl2010-03-25 21:42:34,593 INFO crawl.Crawl (Crawl.java:main(88)) - rootUrlDir = urls2010-03-25 21:42:34,593 INFO crawl.Crawl (Crawl.java:main(89)) - threads = 102010-03-25 21:42:34,593 INFO crawl.Crawl (Crawl.java:main(90)) - depth = 32010-03-25 21:42:34,593 INFO crawl.Crawl (Crawl.java:main(92)) - topN = 502010-03-25 21:42:34,609 WARN fs.FileSystem (FileSystem.java:<init>(1440)) - uri=file:/// javax.security.auth.login.LoginException: Login failed: Cannot run program "whoami": CreateProcess error=2, ?????????atorg.apache.hadoop.security.UnixUserGroupInformation.login(UnixUserGroupInformation.java:25 0)atorg.apache.hadoop.security.UnixUserGroupInformation.login(UnixUserGroupInformation.java:27 5)atorg.apache.hadoop.security.UnixUserGroupInformation.login(UnixUserGroupInformation.java:25 7)at erGroupInformation.login(UserGroupInformation.java:67)at org.apache.hadoop.fs.FileSystem$Cache$Key.<init>(FileSystem.java:1438)at org.apache.hadoop.fs.FileSystem$Cache.get(FileSystem.java:1376)at org.apache.hadoop.fs.FileSystem.get(FileSystem.java:215)at org.apache.hadoop.fs.FileSystem.getLocal(FileSystem.java:191)at org.apache.hadoop.conf.Configuration.getLocalPath(Configuration.java:787)at org.apache.hadoop.mapred.JobConf.getLocalPath(JobConf.java:232)at org.apache.nutch.crawl.Crawl.main(Crawl.java:101)2010-03-25 21:42:34,984 WARN fs.FileSystem (FileSystem.java:<init>(1440)) - uri=file:/// .................问题分析及解决:因为Nutch设计是在linux等系统下运行的,Windows系统是没有"whoami"这个命令的。
经过好几天的尝试,终于成功在windows7的环境下将nutch成功运行出来了,下面将经验记下。
1、cygwin的安装:下载地址:/setup.exe(1)因为nutch自身的命令是要在linux环境下才能运行,所以先安装了cygwin,Cygwin 是一个在Windows下的模拟Linux系统程序。
Cygwin的安装:/cfree_ch/doc/help/UsingCF/CompilerSupport/Cygwin/Cygwin1 .htm这个网址对cygwin的安装步骤演示的很详细,对我们这些初步接触cygwin的人有很大的帮助。
(2)下面是我自己安装时的截图1)安装页面,点击下一步2)选择安装目录,可以根据默认,也可以根据自己需要换路径3)建立Downloads文件夹,接收下载包4)选择镜像地址,没有演示中说的:。
.cn代表中国的网站,下载会更快5)选择安装包6)安装完成2、下载安装apache-nutch-1.2-bin.zip并设置。
下载地址:/dist/nutch/(1)下载完成后将其解压到D盘,文件夹名为nutch-1.2(2)输入,打开到d盘目录下nutch-1.2文件夹,输入bin/nutch 进行nutch安装测试:出来一系列nutch的命令,证明nutch安装成功;(3)在Windows系统的环境变量设置中,添加NUTCH_JA V A_HOME环境变量:D:\jdk1.7.0_07。
并将其值设为JDK的安装目录。
(4)Nutch抓取网站页面前的预备工作1)在Nutch-1.2的安装目录下建立一个名为urls的文件夹,并在文件夹下建立url.text 文件,在文件中写入: (即要抓取网站的网址)2))修改网址过滤规则,编辑conf/crawl-urlfilter.txt文件,修改 部分:3)修改conf/nutch-site.xml代理信息,在<configuration>和</configuration>之间添加如下内容4)修改nutch-1.2\conf\nutch-default.xml文件,找<name></name> ,然后随便设置Value值注意:如果为空时,在爬行的时候可能出现空指针异常且在tomcat 中搜索时可能导致0条记录,所以务必加上。
Nutch搜索引擎数据获取1 基本原理:1.1 体系结构设计:网络蜘蛛一般都具有3模块:HTTP下载模块,链接分析模块,下载控制模块。
HTTP下载模块利用http网络协议下载,获取并存储内容。
链接分析模块能提取网页中的超链接,用来获得后续页面入口。
下载控制模块控制页面访问次序、更新策略、访问队列调度等工作。
工作流程:1、访问URL数据库,读取URL入口地址,生成内存访问队列。
2、寻找空闲的HTTP下载模块,分配URL,启动下载任务。
3、HTTP下载模块访问互联网,得到的网页内容放入结果队列。
4、定期保存到网页数据库,为后续索引做准备。
5、链接分析模块提取页面内的新连接,存入URL数据库等待下载。
6、重复上述过程直到全部下载完成,等待新的任务。
1.2 访问策略与算法:网络蜘蛛访问一个网站,一般入口页面为网站的首页或者sitemap页面。
从这个页面通过链接分析,寻找并访问后续页面地址。
网络蜘蛛对网站的访问有深度限制,一般在3~5层,遍历策略一般采用广度优先算法和深度优先算法。
从应用角度看,广度优先能尽可能的比较平均的获取不同网站的内容,比较适合于大型搜索引擎系统初期网页库的建立;深度优先在设计师比较容易,对垂直搜索或者站内搜索比较合适。
2 Nutch网络蜘蛛2.1 概述Nutch系统包含一个功能强大的网络蜘蛛。
这个网络蜘蛛的核心是Crawl工具。
这个工具根据事先设定的入口URL列表,不断地自动下载页面,知道满足系统预设的停止条件。
Crawl本身是另外一系列网页下载相关工具的组合。
Nutch主要的5个操作命令:Admin:用来创建一个新的WEB数据库,WEB数据库实际上就是URL数据库,存储了网络爬虫抓取的网页信息和网页之间的链接信息。
Inject:添加数据下载的入口链接。
首先读取给定的纯文本格式文件,获取URL列表,作为入口地址添加到已有的web数据库中。
Generate:生成待下载URL列表。
按照WEB数据库格式提取未下载的URL,以fetchlist形式给出,为下载做好准备。
Fetch:按照HTTP协议访问互联网,获取网页数据的具体内容。
下载过程有下载列表和操作参数控制,直到下载完毕。
Updatedb:用来添加网页下一层链接的URL。
从已经下载文件中获取URL 链接,更新web数据库,添加到已有的web数据库。
下载的数据存储主要以目录文件形式存放,具体内容包括WEB数据库、数据段(segments)和数据索引。
1、web数据库(web db)WEB数据库实际上就是URL数据库,存储了网络爬虫抓取的网页信息和网页之间的链接信息。
Web数据库之为网络爬虫服务,并不参与搜索引擎后面的检索和加载。
2、数据段(segments)数据段存放网络爬虫每一次抓取使用的待下载列表、以获得的网页内容和本次内容的索引。
数据段的具体内容会随着重新抓取更新。
数据段存储的数据内容主要饱和3中类型:待下载列表(fecthlist)是从web数据库中得到的,用来指定贮备抓取的网页地址。
已获得的网页内容(fetcher output)是下载的具体网页内容,网页内容采用索引方式存放的数据段中。
数据段索引(index)采用Lucene格式,是当前已经下载内容的索引。
3、数据索引数据索引时数据段索引的合并和汇集。
树荫的数据包含了系统所有的页面,以倒排索引的形式组织。
2.2 Nutch抓取模式分类目前使用比较多的搜索引擎可以划分为3类:全网搜索引擎,垂直搜索引擎和企业搜索引擎。
全网搜索引擎对海量信息的收录数量比较关注,希望尽可能的抓取网页,避免遗漏重要网站。
垂直搜索引擎对信息的实时性和内容的的精确性要求比较高,希望能尽快的针对性的下载信息,比较快的下载更新频率。
企业搜索引擎主要考虑如何以尽量小的代价,完成指定网站的信息下载,建立几乎没有遗漏的本地文档检索系统。
为满足不同类型的需要,nutch的网络蜘蛛提供了两种工作模式:局域网抓取和互联网全网抓取。
局域网抓取采用单一命令完成网页下载,是只对数量较少的网站或者某一个网站进行的网页下载方式。
互联网抓取使用命令组合完成网页下载,是针对网页数量比较多或者直接从开放目录终不过得到的海量网站的下载方式。
3 Nutch局域网抓取Nutch网络蜘蛛的工作机制非常清晰。
首先读取文本文件,增加待下载的URL列表,然后根据配置文和命令行参数,启动下载线程,从目标网站下载网页,得到网页信息保存到本地存储结构中。
3.1 本地测试下载检索1、启动tomcat服务。
2、打开nutch工作目录D:\nutch-0.9,创建weburls文件,文件中添加本次测试地址,作为网络蜘蛛抓取的网站入口地址,文件内容为:http://127.0.0.1:8888/examweb/index.htm(注:examweb文件存放在D:\Tomcat6.0\webapps\ROOT \examweb下,里面为本地测试准备的几个htm网页文件)。
3、打开nutch配置文件目录D:\nutch-0.9\conf,修改URL过滤规则文件crawl-urlfilter.txt。
该文件使用正则表达式来限定入口网站内那些URL需要下载。
过滤规则中以“+”表示允许下载,以“*”表明0或者任意多个字符。
具体修改如下:+^http://127.0.0.1:8888/表示允许下载当前站点内任何URL页面。
4、打开nutch配置文件目录D:\nutch-0.9\conf,修改nutch-site.xml文件。
修改如下:<configuration><property><name></name><value></value><description></description></property></configuration>Value值作为被抓取网站的名称。
本次抓取的网站名设置为.5、启动下载过程5.1、执行Cygwin。
5.2、在Cygwin命令行中输入cd /cygdrive/d/nutch-0.9,进入到Nutch目录5.3、输入命令:bin/nutch crawl weburls.txt –dir localweb –depth 3 –topN 100 –threads 1 回车执行。
命令行中参数指明了抓取行为。
含义如下:dir指定存放爬行结果的目录。
-depth 3 表明需要抓取的页面深度为3层内容。
-topN 100 表明只抓取每一层的前N个URL,本次为每层前100个。
-threads 1 指定crawl只采用一个下载线程进行下载。
本次完成后会在Nutch根目录中建立localweb目录,存放爬行的结果。
5.4修改D:\nutch-0.9\conf下的nutch-site.xml文件,增加检索目录属性指定器,读取数据的目录,修改后文件内容如下:<configuration><property><name></name><value></value><description></description></property><!-- file properties --><property><name>searcher.dir</name><value>D:\nutch-0.9\localweb</value><description></description></property></configuration>5.5、Cygwin命令窗口下执行命令:bin/nutch org.apache.nutch.searcher.NutchBean hat 命令含义即为检索包含hat的网页。
如上述步骤能顺利完成,表明本地测试完成。
3.2、下载多个网站多个网站下载和本地测试方式基本相同,需要修改个别规则。
1 在Nutch根目录中建立文本文件multiurls.txt文件,里面存放希望下载文件列表,自己测试的内容为://////////2修改URL过滤规则文件crawl-urlfilter.txt,允许下载任意站点。
修改后如下:#accept hosts in +^ //默认允许所有的网站# skip everything else-.3 启动Cygwin,进入Nurch目录,执行以下命令:bin/nutch crawl weburls.txt –dir multiweb –depth 2 –topN 100 –threads 5下载内容存放在multiweb目录中,同时建立索引。
4 修改检索规则,修改nutch-site.xml文件,修改后如下:<configuration><property><name></name><value>*</value><description></description></property><!-- file properties --><property><name>searcher.dir</name><value>D:\nutch-0.9\multiweb</value><description></description></property></configuration>5 执行检索命令bin/nutch org.apache.nutch.searcher.NutchBean 汽车结果如下:6 全部操作完成,退出Cygwin命令窗口。
4 Nutch互联网抓取Nutch的互联网抓取和局域网抓取模式有很大差别。
局域网下载模式使用Crawl命令,操作很简便,也有很多限制。
互联网抓取模式使用了更底层的一系列命令、更灵活的控制手段。
下载大量网站URL列表的获取,是真正实现全互联网抓取需要一个比较大的入口。
有两种方法:一是通过DmozParser工具提供了对开放式互联网DMOZ目录库的支持。
DMOZ目录库可以直接从网上下载使用。
使用DmozParser工具可以从文件中随机抽取部分数据,生成文件列表,命令如下:Bin/nutch org.apache.nutch.tools.DmozParser content.rdf.u8 –subset 3000 > dmozurls 命令执行结果是Nutch根目录生成一个dmozurls文本文件,该文件可以作为入口地址添加到下载库中。