• 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 试用日记 - terry831010 - Coder 的博客

     

    Larbin 试用日记 - terry831010 - Coder 的博客

    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
    1. parse.c:115: error: conflicting types for 'adns__parse_domain'
    2. internal.h:571: error: previous declaration of 'adns__parse_domain' was here
    3. parse.c:115: error: conflicting types for 'adns__parse_domain'
    4. internal.h:571: error: previous declaration of 'adns__parse_domain' was here
    5. gmake[1]: *** [parse.o] 错误 1
    6. gmake[1]: Leaving directory `/home/leo/leo/larbin-2.6.3/adns'
    7. make: *** [all] 错误 2
        解决方案:
        函数原型和定义不一致这个好改:
        打开./adns/internal.h文件,把568-571行直接注释掉就行了。
     
       2> 错误2  
    1. -bash:./configure:command not found

        解决方案:

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

    1. ###############################################
    2. //客户端标记,当对其他网站抓取时,被抓取的网站知道是什么抓取的
    3.  
    4. UserAgent larbin_2.6.3
    5. ############################################
    6. # What are the inputs and ouputs of larbin
    7. # port on which is launched the http statistic webserver
    8. # if unset or set to 0, no webserver is launched
    9. //用于运行的http web服务器的端口号(larbin运行时访问http://localhost:8081/,设置为http_port 8081).如果将端口设为0,则不会启动web服务器。通过这个可以查看爬行结果。
    10.  
    11. httpPort 8081
    12. # port on which you can submit urls to fetch
    13. # no input is possible if you comment this line or use port 0
    14.  
    15. //你要爬取url的端口。如果注释掉或设为0,则可能没有任何输入。如果通过手动或者程序提交爬取的//urls,则必须练就到计算机的TCP端口1976,即设为:inputPort 1976,可以添加爬行的url。
    16.  
    17. #inputPort 1976
    18. ############################################
    19. # parameters to adapt depending on your network
    20. # Number of connexions in parallel (to adapt depending of your network speed)
    21. //并行爬取网页的数量,根据自己环境的网速调解,如果超时太多,则要降低这个并行数量
    22.  
    23. pagesConnexions 100
    24. # Number of dns calls in parallel
    25. //并行DNS域名解析的数量。
    26.  
    27. dnsConnexions 5
    28. # How deep do you want to go in a site
    29. //对一个站点的爬取的深度
    30.  
    31. depthInSite 5
    32. # do you want to follow external links
    33. //不允许访问外部链接。如果设置则只可访问同一主机的连接
    34. #noExternalLinks
    35. # time between 2 calls on the same server (in sec) : NEVER less than 30
    36. //访问同一服务器的时间间隔。不可低于30s,建议60s
    37. waitDuration 60
    38. # Make requests through a proxy (use with care)
    39. //是否用代理连接,如果用,则要设置、可以不用尽量不要用,这个选项要谨慎
    40. #proxy www 8080
    41. ##############################################
    42. # now, let's customize the search
    43. # first page to fetch (you can specify several urls)
    44. //开始爬取的URL
    45. startUrl http://slashdot.org/
    46. # Do you want to limit your search to a specific domain ?
    47. # if yes, uncomment the following line
    48. //这个选项设置了,则不可以爬行指定的特殊域名
    49. #limitToDomain .fr .dk .uk end
    50. # What are the extensions you surely don't want
    51. # never forbid .html, .htm and so on : larbin needs them
    52. //不想要的扩展名文件。一定不要禁止.html、.htm.larbin爬取的就是它们。禁止也是无效的
    53. forbiddenExtensions
    54. .tar .gz .tgz .zip .Z .rpm .deb
    55. .ps .dvi .pdf
    56. .png .jpg .jpeg .bmp .smi .tiff .gif
    57. .mov .avi .mpeg .mpg .mp3 .qt .wav .ram .rm
    58. .jar .java .class .diff
    59. .doc .xls .ppt .mdb .rtf .exe .pps .so .psd
    60. end
    2、options.h
     
    2.1 输出模式

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


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

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

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

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

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

    1. #define NOWEBSERVER   //不启动服务器。不运行线程时很有用
    2. #define GRAPH //是否在状态也使用柱状图。
    3. #define NDEBUG //不启动调试信息。
    4. #define NOSTATS //不启动状态输出。
    5. #define STATS //启动状态输出。运行时每个一段时间就会输出抓取的状态
    6. #define BIGSTATS //在标准输出上显示每个被抓去的网页名字。会降低larbin速度
    7. #define CRASH //用于报告严重的bugs用。以gmake debug模式编译时使用。
       
     
       备注:关于larbin配置文件详解,转自:http://terry831010.blog.163.com/blog/static/69161171201227111635189/
       感谢作者。
     
  • 相关阅读:
    高性能JS载入脚本并执行
    JavaScriptDOM高级程序设计myLogger.js
    (旧文重贴)看看这两段代码有什么不同?
    (旧文重贴)原来进行Authorization:basic的时候,后面的credentials就是
    (旧文重贴)终于把ServerAppUnaviable的问题搞定了。
    (旧文重贴)花了一个小时时间,给项目组作了一个汉字到拼音的转换
    (旧文重贴)昨晚和谢晓讨论了一下多组件服务器验证的问题
    大家好!我是浪潮通软的鞠强,初来贵地,请多多指教!
    (旧文重贴)vs.net的asp.net程序无法在winserver2003上打开,终于搞定了,郁闷ing。。。
    (旧文重贴)SQLDMO好像只能在打有sp3的sql2000上用?
  • 原文地址:https://www.cnblogs.com/timssd/p/4719817.html
Copyright © 2020-2023  润新知