Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2469893
  • 博文数量: 392
  • 博客积分: 7040
  • 博客等级: 少将
  • 技术积分: 4138
  • 用 户 组: 普通用户
  • 注册时间: 2009-06-17 13:03
个人简介

范德萨发而为

文章分类

全部博文(392)

文章存档

2017年(5)

2016年(19)

2015年(34)

2014年(14)

2013年(47)

2012年(40)

2011年(51)

2010年(137)

2009年(45)

分类: C/C++

2012-10-23 17:45:33


是一种工具,我也是前段时间网上看到 Larbin 一种高效的 爬虫工具 一文时才知道有这么个东西,初步认定,我比较喜欢这个工具(比起nutch的crawl来说),因为它是C++写的,类似C嘛,我熟,可以自己改改,顺便学习一下C++(几年来的经验告诉我说:改别人的东西来学一种技术比从头写helloworld快很多)。于是开始了我艰辛的larbin试用之旅。
回头看看自己遇到的问题都是由于没认真看文档引起的,唉,老毛病了。下次即使是E文的也得好好看,不能盲目的试,浪费时间。

larbin官方地址: 

一,编译
这也好说,whahahaha,那是!因为从官方网站下下来的代码不能编译通过(linux gcc下)
./configure
make
gcc -O3 -Wall -D_REENTRANT -c -o parse.o parse.c
parse.c:115: error: conflicting types for 'adns__parse_domain'
internal.h:571: error: previous declaration of 'adns__parse_domain' was here
parse.c:115: error: conflicting types for 'adns__parse_domain'
internal.h:571: error: previous declaration of 'adns__parse_domain' was here
gmake[1]: *** [parse.o] 错误 1
gmake[1]: Leaving directory `/home/leo/leo/larbin-2.6.3/adns'
make: *** [all] 错误 2

函数原型和定义不一致这个好改:
打开./adns/internal.h文件,把568-571行直接注释掉就行了。

二,运行
这个就不说了,./larbin就运行了,larbin.conf中先进行配置就可以了,这个配置就不说了。。
运 行后可以 看运行状态,不错的想法。 larbin.conf中有个:inputPort 1976配置,就是可以运行时增加要抓取的URL,这个想法非常好,可是?怎么加呢?象起初那样:那样是不行的,报 错???试了好久没结果,最后GDB跟踪了一下,唉,原来直接telnet host 1976进行增加就可以了。后来看到文档里写的亲亲楚楚,晕倒。。。。。

三,结果
哈哈,下班后找了台机子跑了起来,那晚睡觉的时候都梦见自己的搜索引擎赶超BAIDU了,那个兴奋啊。
第二天上班的时候取看结果,发现目录下除了些fifo*文件外什么都没有,那个郁闷。没办法啊,再看文档 How to customize Larbin 发现这么段说明:

The first thing you can define is the module you want to use for ouput. This defines what you want to do with the pages larbin gets. Here are the different options :
DEFAULT_OUTPUT : This module mainly does nothing, except statistics.
SIMPLE_SAVE : This module saves pages on disk. It stores 2000 files per directory (with an index).
MIRROR_SAVE : This module saves pages on disk with the hierarchy of the site they come from. It uses one directory per site.
STATS_OUTPUT : This modules makes some stats on the pages. In order to see the results, see

靠,默认什么都没输出,于是认真的看了官方网站上仅有的两个文档,修改了options.h再编译,终于有结果了。

我的option中改了:
SIMPLE_SAVE 简单输出一个目录两千个文件,包含索引。
CGILEVEL=0 处理服务器端程序,也就是但url中包含? & = 之类的querString时也处理。
NO_DUP
其余可根据各自需要修改,详见: How to customize Larbin 一文。

四,问题

在使用过程中发现,在抓网页的时候,如果URL中包含未编码(encodurl)时,无法抓取,简单的看了一下在:src/utils/url.cc中的fileNormalize 有涉及。于是写了个encodurl函数加在url类的构造函数里,问题就解决了。

由于需要比较好的可定制性,这个工具似乎还不大满足我的需求,最终我没使用她,而是自己用perl在WWW:SimpleRobot的基础上搞了个适合我的。。再说了perl在字符窜处理上应该不比C++慢,总的来说那个小工具性能还不错。。呵呵。

不过还是把这些写出来,给没看文档的朋友(希望很少),也警示自己一定要认真看文档。
阅读(1441) | 评论(2) | 转发(0) |
给主人留下些什么吧!~~

jiangwen1272013-06-13 15:37:06

zhaoanhongxing:博主你好,谢谢你分享的博客,我用larbin实验了下,都是无法抓取,save文件是空的,在目录中只有fifo000000和fifowait000000,这是什么原因

这是我转载的文章,之前尝试安装larbin,但是没有成功

回复 | 举报

zhaoanhongxing2013-06-10 20:18:03

博主你好,谢谢你分享的博客,我用larbin实验了下,都是无法抓取,save文件是空的,在目录中只有fifo000000和fifowait000000,这是什么原因