大概用了两天的时间用来安装和配置Larbin。总体来说,关于使用和配置larbin的资料还是有很多的,但在安装和配置过程中,我还是遇到了点问题。不过,终于,问题被解决了,larbin能帮我爬东西了!
先说下自己遇到的问题吧:
1. configure时提示没有makedepend程序。因为自己使用的是centos,所用使用yum install 来安装makedepend程序。安装过程中centos提示没有makedepend包,可以去makedepend的官网上下载了一个makedepend的源代码包,或去这里下载rpm包,给安装到我的centos上了。此方法应该同样适用于redhat等发行版。网上大多数博文说到的是ubuntu发行版,提到的解决方法为安装xutils-dev。
2. 安装+配置完成larbin后,居然没有爬取到结果。在网上查了下,也没有答案。开始怀疑是公司网络有问题,自己回家去试了下,也爬不到网页。后来发现,原来是自己给larbin的starturl有问题。www.baidu.com、www.sina.com这些门户作为starturl时都没有结果,但另一些网址,比如http://qdbje.blog.163.com,就可以很顺利地爬取到网页了。
3. 自己在centos上安装Larbin,make的过程中有时居然没有像网上说的那样出现"提示找不到iostream.h这个文件"这一错误,也没有出现与“cerr”有关的错误。非常的奇怪。另外,make过程中一直提示有"XX过期",因为不是错误,所以没有管,最后也不影响larbin的使用。
4. larbin的官网(http://larbin.sourceforge.net/index-eng.html)被墙了。如果需要,可翻下。当然也可以此链接处下载得到:http://sourceforge.net/projects/larbin/files/ 我把自己修改后可用的larbin放在了github (https://github.com/sunada/my_larbin)上,按说明安装后即应该可以使用。
以下大部分为网上的博文,在此整理记录下。
Larbin是一种多功能的网络爬虫,一个法国人最初为 XYLEME project写的,当时只是为了获取网络上的XML文件.Larbin是非常灵活可订制的。
最新版本的Larbin(Larbin在2003年以后就不更新了)在一台普通的PC上一天可爬到5,000,000个网页,当然这很大程序上依赖于你的网速.Larbin工作于linux上,并且依赖于一些标准库,比如adns.
一、安装larbin
下载一个larbin-2.6.3.tar.gz解压,进入目录,运行
./configure
make
进行编译安装.
一般会出很多问题,你需要提前完成以下工作:
1. 确认已经安装了build-essential程序包,最新的GCC编译器,已安装了内核程序包. (如果是centos系统,应该只需要保证安装了gcc、g++、make等编译必须的工具就可以了。)
这一步一般都没问题,该装的都装了.
2.configure时会提示找不到makedepend命令,所以你需要安装一下
sudo apt-get install xutils-dev (在centos系统中,可使用yum install makedepend来安装makedepend,或者去makedepned的官网下载一个rpm包来安装)
3.编译的时候还会出一个问题,说从char*转换到byte*出错,这是由 /larbin-2.6.3/adns下internal.h中第568—571行代码引起的,直接把它注释掉即可.
当然也可以改一下
adns_status adns__parse_domain(adns_state ads, int serv, adns_query qu, vbuf *vb, parsedomain_flags flags, const byte *dgram, int dglen, int *cbyte_io, int max);
修改为:
adns_status adns__parse_domain(adns_state ads, int serv, adns_query qu, vbuf *vb, adns_queryflags flags, const byte *dgram, int dglen, int *cbyte_io, int max);
改过之后还是会有警告,不过谢天谢地,已经不是error了.
4.make的时候会说找不到<iostream.h>,你需要把每个程序文件里的 <iostream.h>改为 <iostream>,然后加上using namespace std这句话。命令为:
sed -i -e 's/iostream.h/iostream/g'`grep -rl iostream.h *` sed -i -e 's/cerr/std::cerr/g'`grep -rl cerr *` sed -i -e 's/endl/std::endl/g'`grep -rl endl *`
也可以有一种简单省力的方法:到/usr/include/c++/下CP一份iostream文件到larbin的src目录下。并将其的名改为iostream.h.打开此文件添加一句using namespace std;
然后再./configure make应该就没问题了。
到此,larbin就算安装好了。
二、larbin的配置
larbin的正常使用需要配置options.h和larbin.config这两个文件。如果修改了options.h,则需要重新make一下。如果只修改了larbin.config则不需要重新make。
下面报一下我的两个配置文件里的内容
larbin.conf httpPort 8099 inputPort 1976 pagesConnexions 100 dnsConnexions 5 waitDuration 60 startUrl http://qdbje.blog.163.com (网上文章中有使用www.baidu.com作为startUrl的,但我的实验表明,baidu不允许larbin爬取其首页。以此作为种子url,larbin爬不到结果……) limitToDomain .com .cn .hk end forbiddenExtensions.tar .gz .tgz .zip .Z .rpm .deb .ps .dvi .pdf.png .jpg .jpeg .bmp .smi .tiff .gif .mov .avi .mpeg .mpg .mp3 .qt .wav .ram .rm .jar .java .class .diff .doc .xls .ppt .mdb .rtf .exe .pps .so .psd end
options.h #ifndef LARBIN_CONFIG #define LARBIN_CONFIG #include "config.h" #define SIMPLE_SAVE #define FOLLOW_LINKS #define CGILEVEL 1 #define DEPTHBYSITE #define RELOAD #define CRASH #endif
三、Larbin的使用
运行 ./larbin (或“nohup ./larbin &”,可使larbin在后台运行)
中止 Ctrl+C
重起 ./larbin -scratch
注意停止larbin的时候不要用Ctrl+z,那样当你再次 ./larbin或者 ./larbin -scratch的时候,会端口已被占用,无法重新启动.
另外,可通过http://IP:Port来访问larbin,从页面上获取一些关于larbin运行的信息。