Larbin是一个用C++开发的开源网络爬虫,有一定的定制选项和较高的网页抓取速度。
一、简介
Larbin是一个用C++开发的开源网络爬虫,有必定的定制选项和较高的网页抓取速度。
Larbin爬虫结构图及首要模块对应联系如下图所示:
Larbin的运转进程能够描绘如下:种子URL文件开端初始化*URLsDisk,读取到namedSiteList中,经过adns库调用,逐步往Fifo<NamedSite> *dnsSites和Fifo<IPSite>*okSites内装入链接,而Fetch模块直接从Fifo<IPSite> *okSites中取得用于抓取的URL,为抓取到的网页树立hash表,以避免网页的重复抓取。然后经过html类的办法从下载到的网页中析取出新的URL,新参加前端行列的URL要求契合robots filter,并经过hash表对URL去重。一次抓取完毕后进行相关的读写操作,然后经过poll函数挑选合适的套接字接口,开端新的抓取。这样抓取就能够一向循环下去,直到用户中止或许发生间断。
更多关于Larbin项目的细节(包括源码)能够参看这儿。
二、装置
这儿以在CentOS 6.2下源码装置Larbin-2.6.3.tar.gz为例阐明之。
解压到指定目录后,假如直接./configure,一般会呈现短少依靠makedepend的过错,如下装置改依靠即可:
- #yuminstallmakedepend
- #./configure
./configure成功后,假如直接make同样会呈现过错,首要如下:
- parse.c:113:error:conflictingtypesfor‘adns__parse_domain’
- internal.h:569:note:previousdeclarationof‘adns__parse_domain’washere
依据提示直接去adns目录找到internal.h注释掉该函数即可。
再次make,仍然呈现过错,这次首要是因为代码用旧式C代码编写,具体体现如下:
- input.cc:6:22:error:iostream.h:Nosuchfileordirectory
选用如下指令替换 iostream.h为 iostream:
- #sed-i-e's/iostream.h/iostream/g'`grep-rliostream.h*`
留意上面包括grep的不是单引号而是Esc键下面那个符号`。
再次make,呈现许多过错,原因同上,体现如下:
- hashTable.cc:32:error:‘cerr’wasnotdeclaredinthisscope
- hashTable.cc:41:error:‘cerr’wasnotdeclaredinthisscope
- hashTable.cc:42:error:‘endl’wasnotdeclaredinthisscop
履行如下指令将cerr和endl替换为std::cerr和std::endl:
- #sed-i-e's/cerr/std::cerr/g'`grep-rlcerr*`
- #sed-i-e's/endl/std::endl/g'`grep-rlendl*`
再次make就不会有问题了,编译完后在当时目录下会发生larbin可履行文件。
- #./larbin
- larbin_2.6.3isstartingitssearch
看到上面屏幕输出阐明成功发动larbin了。
三、装备
上面方法发动larbin会运用默许装备文件larbin.conf,当然也能够如下来指定装备文件:
- #./larbin-cconf_file
larbin的装备是经过options.h和larbin.conf结合来完结的,前者修改后需求从头编译,后者修改后只需求重启即可。
在options.h中以下参数最好翻开:
- #defineSIMPLE_SAVE//简略保存抓取页面,存在save/dxxxxx/fyyyyy文件中,每个目录下2000个文件
- #defineFOLLOW_LINKS//持续抓取子链接
- #defineCGILEVEL1//是否取得CGI
- #defineDEPTHBYSITE//进入新的URL时是否初始化深度
- #defineRELOAD//设置此项时能够从前次中止处持续爬取,运用-scratch选项从前次完毕处重启
- #defineCRASH//用于陈述严峻的bugs用,以gmakedebug形式编译时运用
装备完别忘了make。
在larbin.conf中以下参数最好翻开:
- httpPort8081//用于检查匍匐成果的web服务端口
- inputPort1976//用于设置匍匐url的telnet服务端口
- pagesConnexions100//并行抓取网页的连接数
- dnsConnexions5//并行DNS解析的数量
- depthInSite5//对一个站点的爬取深度
- waitDuration60//拜访同一服务器的时刻距离,不行低于30s,主张60s
- startUrlhttp://slashdot.org///开端抓取页面
关于装备的具体能够拜见这儿。
装备好就能够发动服务开端抓取了。
关于开端抓取url除了能够设置外,还能够经过telnet localhost 1976来设置,在终端提示符下输入:
0
- parse.c:113:error:conflictingtypesfor‘adns__parse_domain’
- internal.h:569:note:previousdeclarationof‘adns__parse_domain’washere
这儿把优先级设为了1,确保你输入的URL比一般的URL优先被抓取,假如输入了许多URL,把优先级设为0,避免run out of memory。
depth指定抓取链接的深度,一般不要超越5。
test设为0表明假如一面网页之前现已抓取过了,而且现在又要抓取,那就抓取,test设为1能够避免重复的抓取。
这儿设置的作用同larbin.conf中的startUrl。
四、运用
运转:./larbin(或“nohup ./larbin &”,可使larbin在后台运转)
间断:Ctrl+C
重启:./larbin -scratch
留意中止larbin的时分不要用Ctrl+z,那样当你再次./larbin或许./larbin -scratch的时分,会呈现端口已被占用,无法从头发动。
别的,可经过http://localhost:8081来拜访larbin,从页面上获取一些关于larbin运转的信息。
原文链接:http://blog.chinaunix.net/uid-22312037-id-4390559.html
知优网 » 解密搜索引擎技能之爬虫Larbin(搜索引擎爬虫原理)