larbin是一种开源的网络爬虫/网络蜘


主要是配置larbin.conf文件和options.h
注意:更改前者可以直接运行,如果更改了第二个就要重新make了!!!

如果你英文够好的话就可以直接看了,都有详细的解释。不行的话就看翻译吧http://blog.chinaunix.net/uid-26548237-id-3391533.html
根据你自己的需要改一下配置吧。
我就把我的配置给大家看一下,仅供参考:
larbin.conf->

UserAgent larbin_2.6.3
httpPort 8081
inputPort 1976
pagesConnexions 100
dnsConnexions 5
depthInSite 5
waitDuration 60
startUrl http://www.jd.com/


options.h->
#define SIMPLE_SAVE  
#define FOLLOW_LINKS
#define NO_DUP
#define EXIT_AT_END
#define CGILEVEL 1
#define DEPTHBYSITE
#define GRAPH
#define STATS
#define BIGSTATS

重新编译运行,感觉就要成功!(浏览器里面输入localhost:8081可以监控)

然后运行还没一秒,就结束了。当时我在想,卧槽,这爬虫也太快了吧,我的深度设置的可是5啊。看save文件夹,什么都没有!!!
我百思不得其解啊,又看了一遍配置文档,没什么地方有错误啊。然后看了下网上的例子,也差不多啊。我灵机一动把起始网站换成了我大淘宝,重新来了一遍,果然成功了。
save文件夹下多了很多文件,打开一看是正确的localhost8081也有反应了。

经历诸多磨难,我发现时京东网页太大,larbin默认是100k以下的网页。这里还要用到一个配置文件./src/types.h
将其中的#define maxPageSize    100000
#define nearlyFullPage  90000都乘以3就行了(具体可以根据自己的需求更改)

成功了!!!!!

larbin只抓取网页,至于如何parse的事情则由用户自己完成。另外,如何存储到数据库以及建立索引的事情 larbin也不提供。一个简单的larbin的爬虫可以每天获取500万的网页。

利用larbin,我们可以轻易的获取/确定单个网站的所有链接,甚至可以镜像一个网站;也可以用它建立url 列表群,例如针对所有的网页进行 url retrive后,进行xml的联结的获取。或者是 mp3,或者定制larbin,可以作为搜索引擎的信息的来源。

larbin爬虫,如果有可能会给它添加一个删除功能,因为其排重部分用的是bloom filter算法,这个算法的有点很明显,对大规模数据的处理很快,性能很好,而且内存占用很小,但是什么事都没有尽善尽美的,该算法的直接缺点就是不能删除,还会出现误判情况。关于bloom filter有很多相关论文,网上也有些高质量的文章,暂时不做累述,之后如果自己有不一样的看法,再写关于该算法的文章。

从Larbin看互联网爬虫设计

于敦德
2005.12.16
转载请注明出处

互联网是一个庞大的非结构化的数据库,将数据有效的检索并组织呈现出来有着巨大的应用前景,尤其是类似RSS的以XML为基础的结构化的数据越来越多,内容的组织方式越来越灵活,检索组织并呈现会有着越来越广泛的应用范围,同时在时效性和可读性上也会有越来越高的要求。这一切的基础是爬虫,信息的来源入口。一个高效,灵活可扩展的爬虫对以上应用都有着无可替代的重要意义。

要设计一个爬虫,首先需要考虑的效率。对于网络而言,基于TCP/IP的通信编程有几种方法。

第一种是单线程阻塞,这是最简单也最容易实现的一种,一个例子:在Shell中通过curl,pcregrep等一系统命令可以直接实现一个简单的爬虫,但同时它的效率问题也显而易见:由于是阻塞方式读取,dns解析,建立连接,写入请求,读取结果这些步骤上都会产生时间的延迟,从而无法有效的利用服务器的全部资源。

第二种是多线程阻塞。建立多个阻塞的线程,分别请求不同的url。相对于第一种方法,它可以更有效的利用机器的资源,特别是网络资源,因为无数线程在同时工作,所以网络会比较充分的利用,但同时对机器CPU资源的消耗也是比较大,在用户级多线程间的频繁切换对于性能的影响已经值得我们考虑。

第三种是单线程非阻塞。这是目前使用的比较多的一种做法,无论在client还是server都有着广泛的应用。在一个线程内打开多个非阻塞的连接,通过poll/epoll/select对连接状态进行判断,在第一时间响应请求,不但充分利用了网络资源,同时也将本机CPU资源的消耗降至最低。这种方法需要对dns请求,连接,读写操作都采用异步非阻塞操作,其中第一种比较复杂,可以采用adns作为解决方案,后面三个操作相对简单可以直接在程序内实现。

效率问题解决后就需要考虑具体的设计问题了。

url肯定需要一个单独的类进行处理,包括显示,分析url,得到主机,端口,文件数据。

然后需要对url进行排重,需要一个比较大的url Hash表。

如果还要对网页内容进行排重,则还需要一个Document Hash表。

爬过的url需要记录下来,由于量比较大,我们将它写到磁盘上,所以还需要一个FIFO的类(记作urlsDisk)。

现在需要爬的url同样需要一个FIFO类来处理,重新开始时,url会从定时从爬过的url FIFO里取出来,写到这个FIFO里。正在运行的爬虫需要从这个FIFO里读数据出来,加入到主机类的url列表里。当然,也会从前一个FIFO里直接读url出来,不过优先级应该比这个里面出来的url低,毕竟是已经爬过的。

爬虫一般是对多个网站进行爬取,但在同时站点内dns的请求可以只做一次,这就需要将主机名独立于url,单独有一个类进行处理。

主机名解析完成后需要有一个解析完成的IP类与之应用,用于connect的时候使用。

HTML文档的解析类也要有一个,用来分析网页,取出里面的url,加入到urlsDisk。

再加上一些字符串,调度类,一个简单的爬虫基本上就完成了。

以上基本上是Larbin的设计思路,Larbin在具体实现上还有一些特殊的处理,例如带了一个webserver,以及对特殊文件的处理。 Larbin有一点设计不不太好,就是慢的访问会越来越多,占用大量的连接,需要改进,另外如果对于大规模的爬虫,这仅仅实现了抓取的部分,要分布式的扩展还需要增加url的集中管理与调度以及前台spider的分布式算法。

http://sourceforge.net/projects/larbin/files/latest/download?source=files

记得以前同事安装过一次,还是我帮着弄好的,最近对web crawler感兴趣,所以就拿来看看。

从sourceforge下载了larbin2.6.3

解压,进入larbin的主目录

./configure ;一堆warning,还发现了一个error:为函数声明和定义不一致所引起的,修改成一致的就OK了。

若是出现gmake[2]: *** [dep-in] Error 127之类错误

需要安装makedepend工具:

# yum install imake

make;这个也会报一堆错:错误是因为larbin是由C++编写的,2006年的C++类库的使用和现在差异有些不同。此处错误的修正方式:将所有的

1
#include<iostream.h>

变成

1
#include<iostream>

即可,然后在引用cerr的.cc文件中加入

1
using namespace std;

即可。

./larbin

在oschina上找到larbin的安装文章:《网页爬虫之 Larbin 安装方法》,

1adns目录找到internal.h文件注释掉568-572行。
?
//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);
2sudo apt-get install xutils-dev
3sed -i -e 's/iostream.h/iostream/g' `grep -rl iostream.h *`  
4sed -i -e 's/cerr/std::cerr/g' `grep -rl cerr *`
5sed -i -e 's/endl/std::endl/g' `grep -rl endl *`

6sudo apt-get install xutils-dev


以上基本就可以编译成功了。


关于针对单站采集速度慢的解决方案:


1、将larbin.conf里面的waitDuration设置为1,这里不再考虑polite^_^, 设置为1大多数网站其实还能忍受;
    2、将types.h里面的maxUrlsBySite修改为254;
    3、将main.cc里面的代码做如下修改:
  

// see if we should read again urls in fifowait
if ((global::now % 30) == 0) {
    global::readPriorityWait = global::URLsPriorityWait->getLength();
    global::readWait = global::URLsDiskWait->getLength();
}
if ((global::now % 30) == 15) {
    global::readPriorityWait = 0;
    global::readWait = 0;
}



配置说明:

1.larbin.conf
UserAgent : 客服端标识 当对其他网站抓取时被抓取的网站知道是什么抓取的。

httpPort : 用于运行的http web服务器的端口号 (larbin运行时访问http://localhost:8081/ 设置为:httpPort 8081). 如果将端口号设为0 则不会启动web服务器。这允许larbin不作为单线程运行。通过这个查看爬行结果。

      inputPort :你要爬去的urls的端口。如果注释掉或设为0 则可能没有任何输入。如果通过手动或者程序提交爬去的urls则必须连接到计算机的TCP端口1976。即设为: inputPort 1076。可以添加爬行的url

pagesConnexions : 并行爬取网页的数量。根据自己的网络速度调解。如果超时的太多则要降低这个并行数量。

dnsConnexions : 并行dns域名解析的数量。建议为10

depthInSite :对一个站点爬取得深度

noExternalLinks :不允许访问外部连接。如果设置则只可访问同一HOST的连接。

waitDuration :访问同一服务器的时间间隔。不可低于30s。建议60s,也不会慢。

proxy :是否用代理连接,是则要设置. 可以不用代理就不要用代理连接,用代理很慢,也可能不适合于代理特别是带有缓存的。

StartUrl : 开始爬取得url. 如:StartUrl  http://slashdot.org/。

limitToDomain : 这选项可用则不可以爬行指定的特殊域名。设置方式:limitToDomain .fr .dk end 。则不允许爬行这些域名。

forbiddenExtensions : 不想要的扩展名文件。一定不要禁止.html .htm larbin爬得即使它们。实际上指定禁止也一定是无效的。

                      用法:forbiddenExtensions .tar .gz .deb



   2.options.h

     1.选择输出模式 (不用则在前面注释去掉即可)


#define DEFAULT_OUTPUT 默认模式。 什么都不会输出,所以不要选择这个。

#define SIMPLE_SAVE     简单保存。存在save/dxxxxxx/fyyyyyy文件中 每个目录下2000个文件。

#define MIRROR_SAVE    镜像方式存储。按网页的层次存储。可以作为网页的字典。

#define STATS_OUTPUT   状态输出。在网页上进行状态表示。可以通过查看http://localhost:8081/output.html 查看结果。


        这些模式被定制在src/types.h中。自己可以在src/interf/useroutput.cc中定义自己的输出模式。

     2.特定查询

        设定此模式是查询特定的文件,必须定义两个参数。

       

#define SPECIFICSEARCH :设置特定的查询。

#define contentTypes ((char *[]) { "audio/mpeg", NULL }) :内容类型。

#define privilegedExts ((char *[]) { ".mp3", NULL })  :文件扩展。 用于查询速度 不涉及类型 类型由上一个决定


        设置完要设置特定文件的管理

#define DEFAULT_SPECIFIC :默认管理方式。 作为html有限制除了被解析。

#define SAVE_SPECIFIC :存储特定文件。 允许将文件存储在硬盘上  文件可以很大在src/types.h 可以具体设置。

#define DYNAMIC_SPECIFIC :动态存储模式。对于较大的文件动态的分配buffer



        可以通过"src/fetch/specbuf.cc" and "src/fetch/specbuf.h" 定义特定文件的管理方式。

     3. 你要爬虫做什么

 

#define FOLLOW_LINKS 不继续子链接。不设置此项则html页不被解析链接也不会爬子链接。通过输入系统添加url时很有用

#define LINKS_INFO :每个网页中包含的子链接的列表。在"useroutput.cc" page->getLinks() 访问此信息。

#define URL_TAGSurl标签。设置此项url有一个int(默认为0)。使用输入系统统时应该给定一个int。可以通过其获取url。可以重定向。

#define NO_DUP 不允许重复。如果设置则遇到相同网页但已遇到过时则不管。

#define EXIT_AT_END :结束退出。没有url可爬取时是否退出。设置则退出。

#define IMAGES:抓取网页中的图片。设置了此项则要更新larbin.conf中禁止项。

#define ANYTYPE:抓取任何类型网页不管其的类型。设置要更新larbin.conf

#define COOKIES:要larbin管理cookies。只简单实现但很有用。


  4. 其他选项说明

    

#define CGILEVEL 1:定于选项及其参数。用于对爬行的url的限制。

#define MAXBANDWIDTH 200000 larbin使用的带宽大小。不设置则不限带宽。

#define DEPTHBYSITE :当url链接到其他站点时新rul的深度是已被初始化的。


  5.效率和特征

  

  #define THREAD_OUTPUT:是否为输入制定一个专用线程。当你在useroutput.cc定义自己的代码时必须设置此项。

  #define RELOAD:重启位置记录表。设置此项时可以从上次终止处继续爬取。使用-scratch 选项从上次结束处重启。


          6. Larbin怎样工作

           

#define NOWEBSERVER:不启动服务器。不运行线程时很有用

             #define GRAPH:是否在状态也使用柱状图。

             #define NDEBUG:不启动调试信息。

             #define NOSTATS:不启动状态输出。

             #define STATS:启动状态输出。运行时每个一段时间几秒吧就会输出抓取的状态。

             #define BIGSTATS:在标准输出上显示每个被抓去的网页名字。会降低larbin速度。

             #define CRASH:用于报告严重的bugs用。以make debug模式编译时使用。   



    以下是结果截图:
 

larbin是一种开源的网络爬虫/网络蜘

 

larbin是一种开源的网络爬虫/网络蜘

http://blog.chinaunix.net/uid-26722078-id-3775344.html

http://blog.chinaunix.net/uid-26548237-id-3391533.html

http://blog.sina.com.cn/s/blog_63a9d9f301014v9z.html

http://www.cnblogs.com/zhangchaoyang/articles/2031954.html

https://www.baidu.com/s?wd=larbin%20%E7%BC%96%E8%AF%91&pn=10&oq=larbin%20%E7%BC%96%E8%AF%91&tn=baiduhome_pg&ie=utf-8&rsv_idx=2&rsv_pq=b43d487a0000f36e&rsv_t=54949tMPJaQcJel2Z7ylvFE09cJS99twSmLKkBfwOcnJmTc0JGynzRQCd8KqDWGcfvdG&rsv_page=1

    larbin编译成功后,有两个主要方向:一是通过相关资料读Larbin的源代码,最终的目的是自己能开发个简单的爬虫;第二个是分析得到的数据,做数据的分析与挖掘。当然,也有人想把这些数据提取出来后,怎么导入数据库。

         所有源代码的读法,肯定要用到工具。在windows下可以用vs系列,而linux开发的源代码则用SourceInsight。所以这里我使用SourceInsight软件看Larbin。

         首先通过网络知识了解爬虫的基本知识和基本问题。爬虫从一个URL出发,使用广度优先算法,遍历整个网站。其中涉及URL的规整化(MD5算法),URL的判重(Bloom Filter算法),爬虫队列的设计,对网络和文件存取的控制等问题。

         Larbin的主函数中有Larbin爬虫的主要工作流程,其代码如下:

  1. stateMain(-count);  
  2. waitBandwidth(&old);  
  3. stateMain(1);  
  4. for (int i=0; i<global::maxFds; i++)  
  5.   global::ansPoll[i] = 0;  
  6. for (uint i=0; i<global::posPoll; i++)  
  7.   global::ansPoll[global::pollfds[i].fd] = global::pollfds[i].revents;  
  8. global::posPoll = 0;  
  9. stateMain(2);  
  10. input();  
  11. stateMain(3);  
  12. sequencer();  
  13. stateMain(4);  
  14. fetchDns();  
  15. stateMain(5);  
  16. fetchOpen();  
  17. stateMain(6);  
  18. checkAll();  
  19. // select  
  20. stateMain(count++);  
  21. poll(global::pollfds, global::posPoll, 10);  
  22. stateMain(7);  

其中,stateMain 函数其实是个简单的宏,只是将状态变量简单的设置为i,记录当前爬虫所处在第几个阶段;

  1. #define stateMain(i) (stateMain = i)  


其他几个函数,网上查到的资料如下:

        1.waitbandwidth() 等待带宽满足需要 
        2.input() 将需要爬取的seed URL装载进来
        3.sequencer() 对将要爬取的页面进行缓冲,确定每一轮可以进行爬取的页面 
        4.fetchDns()  获取待爬取页面的IP地址和端口号,这需要通过练习DNS服务器将URL进行转换 
        5.fetchOpen() 获取当前网页
        6.checkAll() 做一些检验和网页链接分析(也是我们可以定制化的一部分)

Larbin的安装与配置 2012-10-30 20:47:48

分类: 网络与安全

   由于以前没有接触过网络爬虫,对网络爬虫仅仅停留在听过,具体怎么样不天清楚。正好,需要完成某作业,我想这样可以了解了解这方面的知识了。

 
   从网上看了很多网络爬虫,最后,选择了Larbin,因为这是用C++写的,对于源码可以相对比较容易的看懂。
   
   现在,把安装过程和相关的配置记录下来,省的以后用的时候还得查找资料。
 
一、Larbin的安装
 
   从官网上获取源码包:larbin.2.6.3。
   
   现在开始正式安装。
   1、 ./configure
   2、 gmake debug(debug:调试安装,当然,也可以不使用该选项)
 
   但是,安装过程中出现了错误,如下所示。
 
   1> 错误1
  • 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行直接注释掉就行了。
     
       2> 错误2  
  • -bash:./configure:command not found
  •     解决方案:

        我上网查了查,执行了命令:chmod +x configure,然后就可以了。不晓得为什么。
     
    二、Larbin的配置说明
     
    1、larbin.conf文件

  • ###############################################
  • //客户端标记,当对其他网站抓取时,被抓取的网站知道是什么抓取的
  •  
  • UserAgent larbin_2.6.3
  • ############################################
  • # What are the inputs and ouputs of larbin
  • # port on which is launched the http statistic webserver
  • # if unset or set to 0, no webserver is launched
  • //用于运行的http web服务器的端口号(larbin运行时访问http://localhost:8081/,设置为http_port 8081).如果将端口设为0,则不会启动web服务器。通过这个可以查看爬行结果。
  •  
  • httpPort 8081
  • # port on which you can submit urls to fetch
  • # no input is possible if you comment this line or use port 0
  •  
  • //你要爬取url的端口。如果注释掉或设为0,则可能没有任何输入。如果通过手动或者程序提交爬取的//urls,则必须练就到计算机的TCP端口1976,即设为:inputPort 1976,可以添加爬行的url。
  •  
  • #inputPort 1976
  • ############################################
  • # parameters to adapt depending on your network
  • # Number of connexions in parallel (to adapt depending of your network speed)
  • //并行爬取网页的数量,根据自己环境的网速调解,如果超时太多,则要降低这个并行数量
  •  
  • pagesConnexions 100
  • # Number of dns calls in parallel
  • //并行DNS域名解析的数量。
  •  
  • dnsConnexions 5
  • # How deep do you want to go in a site
  • //对一个站点的爬取的深度
  •  
  • depthInSite 5
  • # do you want to follow external links
  • //不允许访问外部链接。如果设置则只可访问同一主机的连接
  • #noExternalLinks
  • # time between 2 calls on the same server (in sec) : NEVER less than 30
  • //访问同一服务器的时间间隔。不可低于30s,建议60s
  • waitDuration 60
  • # Make requests through a proxy (use with care)
  • //是否用代理连接,如果用,则要设置、可以不用尽量不要用,这个选项要谨慎
  • #proxy www 8080
  • ##############################################
  • # now, let's customize the search
  • # first page to fetch (you can specify several urls)
  • //开始爬取的URL
  • startUrl http://slashdot.org/
  • # Do you want to limit your search to a specific domain ?
  • # if yes, uncomment the following line
  • //这个选项设置了,则不可以爬行指定的特殊域名
  • #limitToDomain .fr .dk .uk end
  • # What are the extensions you surely don't want
  • # never forbid .html, .htm and so on : larbin needs them
  • //不想要的扩展名文件。一定不要禁止.html、.htm.larbin爬取的就是它们。禁止也是无效的
  • 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
  • 2、options.h
     
    2.1 输出模式

  • // Select the output module you want to use
  • //默认模式。什么也不输出,不要选择这个
  • #define DEFAULT_OUTPUT // do nothing...
  • //简单保存,存在save/dxxxxx/fyyyyy文件中,每个目录下2000个文件
  • //#define SIMPLE_SAVE // save in files named save/dxxxxxx/fyyyyyy
  • //镜像方式存储。按网页的层次存储,可以作为网页的字典。
  • //#define MIRROR_SAVE // save in files (respect sites hierarchy)
  • //状态输出。在网页上进行状态输出,可以查看http://localhost:8081/output.html查看结果
  • //#define STATS_OUTPUT // do some stats on pages
  •     这些模式被定制在src/type.h中,可以在src/interf/useroutput.cc中定制自己的输出模式。
       这个文件中还有很多相关配置,更改后,需要重新编译。
      
    2.2 特定查询
     
  • // Set up a specific search
  • //设置特定的查询
  • //#define SPECIFICSEARCH
  • //内容类型
  • //#define contentTypes ((char *[]) { "audio/mpeg", NULL })
  • //文件扩展。用于查询速度,不涉及类型,类型由上一个决定
  • //#define privilegedExts ((char *[]) { ".mp3", NULL })

  • 2.3 设置完要设置特定文件的管理

  • #define DEFAULT_SPECIFIC //默认管理方式。 作为html有限制除了被解析。
  • // 存储特定文件。 允许将文件存储在硬盘上 文件可以很大在src/types.h 可以具体设置。
  • #define SAVE_SPECIFIC 
  • //动态存储模式。对于较大的文件动态的分配buffer。
  • #define DYNAMIC_SPECIFIC 
  •      可以通过"src/fetch/specbuf.cc" and "src/fetch/specbuf.h" 定义特定文件的管理方式。
     
    2.4 你要爬虫做什么

  • //不继续子链接。不设置此项则html页不被解析链接也不会爬子链接。通过输入系统添加url时很有用
  • #define FOLLOW_LINKS
  •  
  • //每个网页中包含的子链接的列表。在"useroutput.cc" 用page->getLinks() 访问此信息。
  • #define LINKS_INFO 
  • //url标签。设置此项url有一个int(默认为0)。使用输入系统统时应该给定一个int。可以通过其获取u//rl。可以重定向。
  • #define URL_TAGS
  •  
  • //不允许重复。如果设置则遇到相同网页但已遇到过时则不管。
  • #define NO_DUP
  • //结束退出。没有url可爬取时是否退出。设置则退出。
  • #define EXIT_AT_END 
  • //抓取网页中的图片。设置了此项则要更新larbin.conf中禁止项。
  • #define IMAGES
  • //抓取任何类型网页不管其的类型。设置要更新larbin.conf。
  • #define ANYTYPE
  • //要larbin管理cookies。只简单实现但很有用。
  • #define COOKIES
  • 2.5 其他选项说明

  • #define CGILEVEL 1        //定于选项及其参数。用于对爬行的url的限制。
  • #define MAXBANDWIDTH 200000  //larbin使用的带宽大小。不设置则不限带宽。
  • #define DEPTHBYSITE          //当url链接到其他站点时新rul的深度是已被初始化的。
  • 2.6 效率和特征

  • //是否为输入制定一个专用线程。当你在useroutput.cc定义自己的代码时必须设置此项。
  • #define THREAD_OUTPUT
  • //重启位置记录表。设置此项时可以从上次终止处继续爬取。使用-scratch 选项从上次结束处重启。
  • #define RELOAD
  • 2.7 Larbin怎么工作

  • #define NOWEBSERVER   //不启动服务器。不运行线程时很有用
  • #define GRAPH //是否在状态也使用柱状图。
  • #define NDEBUG //不启动调试信息。
  • #define NOSTATS //不启动状态输出。
  • #define STATS //启动状态输出。运行时每个一段时间就会输出抓取的状态
  • #define BIGSTATS //在标准输出上显示每个被抓去的网页名字。会降低larbin速度
  • #define CRASH //用于报告严重的bugs用。以gmake debug模式编译时使用。
  •    
     
       备注:关于larbin配置文件详解,转自:http://terry831010.blog.163.com/blog/static/69161171201227111635189/
       感谢作者。