配置Larbin爬取图片

安装平台:Ubuntu 10.04.1 LTS (内核版本2.6.32-29-generic)

Larbin下载:http://sourceforge.net/projects/larbin/files/larbin/2.6.3/larbin-2.6.3.tar.gz/download

Larbin的安装           

tar -zxvf   larbin-2.6.3.tar.gz
cd larbin-2.6.3
./configure
make

这时会报错,修改

adns文件夹下internal.h文件569-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);

然后到/usr/include/c++/下CP一份iostream文件到larbin的src目录下。并将其名改为iostream.h,在文件中添加一句using namespace std;

继续make就可以编译成功了!

运行 ./larbin

终止 ctrl+c 

Larbin的配置

如果英语水平还可以的话,最好直接看Larbin的文档,写得比较详细了,而且也简单(不是那种开发文档),在文件夹doc中。

Larbin的配置主要通过更改当前目录下的larbin.conf和options.h两个文件,文档也是针对这两个文件来讲解怎么配置。

在larbin.conf中,几个常用设置:

httpPort 8081  查看爬虫统计数据端口

pagesConnexions 100   并行连接的数目

dnsConnexions 5            并行请求dns的数目

depthInSite 5                    对一个站点访问的深度

waitDuration 60               对同一服务器两次请求的时间间隔,不能小于30

startUrl http://www.mtime.com/  起始url

#limitToDomain .fr .dk .uk end   拒绝爬取的域名

forbiddenExtensions       拒绝爬取以下扩展名的webpage

为了限定Larbin只爬取图片,在options.h中取消以下的注释(更改该文件要重新make才能生效):

#define SPECIFICSEARCH

#define contentTypes ((char *[]) { "image/jpeg", "image/jpeg", "image/bmp", "image/tiff", "image/gif", "image/png", NULL })
#define privilegedExts ((char *[]) { ".jpg", ".jpeg", ".bmp", "tiff", ".gif", ".png", NULL })
// how do you want to manage specific pages (select one of the followings)

//#define DEFAULT_SPECIFIC
#define SAVE_SPECIFIC
//#define DYNAMIC_SPECIFIC

// do you want to fetch images
// if you enable this option, update forbiddenExtensions in larbin.conf
#define IMAGES
同时在larbin.conf文件中,注释掉对图片扩展名的限制:
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
取消下面的注释,这个可以保证从上次停止的地方继续爬取:./larbin -scratch
#define RELOAD

不过有时重新启动时会出现trouble while creating dir: File exists
网上找的原因是:larbin  Reload的实现其实是用hash表来保存,以及它的文件队列来实现的,如果你抓取的时间过短的话hash表不会被保存到文件上(有个数量的限制,只有达到那个抓取量,才会把内存中的hash表同步到文件一次)。具体还是看源码。


另外,正常爬取一段时间之后,可能会报这样的错误:

larbin: site.cc:97: void NamedSite::putInFifo(url*): Assertion `inFifo!=outFifo' failed.
出错地方的代码为:src/fetch/site.cc 97行,原因是队列已满,我改正的方法是直接丢弃后面的入队的元素
/* Management of the Fifo */
void NamedSite::putInFifo(url *u) {
  fifo[inFifo] = u;
  inFifo = (inFifo + 1) % maxUrlsBySite;
  assert(inFifo!=outFifo);
}

应该将这个函数改为:
/* Management of the Fifo */
void NamedSite::putInFifo(url *u) {
  if ((inFifo + 1) % maxUrlsBySite == outFifo) //the fifo is full
    return;
  fifo[inFifo] = u;
  inFifo = (inFifo + 1) % maxUrlsBySite;
  assert(inFifo!=outFifo);
}

最后,如果还要进一步的配置,可以更改type.h文件,也挺简单的。

测试实验
为完成作业,在我奔腾双核,1G内存的本上爬了5个小时图片,下面个是Larbin自带web服务器上的统计数据:
----------------------------------------------
Start date: Fri Oct 14 14:45:59 2011
End date: Fri Oct 14 19:46:00 2011
Total time: 5:00:01
Total pages: 334597(8.5G)
Interesting pages
total fetched (success): 212773
total fetched (error or success) : 334597
privileged links seen (.jpg, .jpeg, .bmp, tiff, .gif, .png) : 667742
privileged links fetched : 345455
Pages :
urls treated : 468042   
forb robots : 12932
no dns :     31233
        
Pages :       422325   
Success :     277923   
no connection : 3856
early stop :     647
timeout :     3212
bad type :     1193
too big :   73
err 30X :     5744
err 40X :     5824
duplicate :     125398
urls accepted : 3428136 / 64000000
-----------------------------------------------
Network traffic: 500-1200 KB/sec
CPU used: 4%-9%  
memory used:15%
------------------------------------------------

转载于:http://blog.csdn.net/tjhd1989/article/details/7416594

//-------------------------------------------------------------------------------------------------

注:原作者对options.h文件的修改,在本人的机器上不能爬出图片,更改代码(

#define IMAGES

)后,能够爬取。

并且本人更改options.h文件,

#define DEFAULT_OUTPUT   // do nothing...
//#define SIMPLE_SAVE      // save in files named save/dxxxxxx/fyyyyyy
//#define MIRROR_SAVE      // save in files (respect sites hierarchy)
//#define STATS_OUTPUT     // do some stats on pages
也即,不保存爬取的网页,而是只存图片,

本人爬取的结果:

Start date :   Sat Oct  4 19:42:19 2014
Current date : Sat Oct  4 21:42:20 2014
up: 2:00:01

Interesting pages (image/jpeg, image/jpeg, image/bmp, image/tiff, image/gif, image/png) :

total fetched (success) : 57011 total fetched (error or success) : 59571 privileged links seen (.jpg, .jpeg, .bmp, tiff, .gif, .png) : 360256 privileged links fetched : 62583

Pages :

urls treated : 131977 (current rate : 17, overall rate : 18) forb robots : 9079 no dns : 10438 Pages : 112330 (current rate : 15, overall rate : 15) Success : 92428 (current rate : 13, overall rate : 12) no connection : 161 early stop : 727 timeout : 6644 bad type : 1153 too big : 4392 err 30X : 4304 err 40X : 2551 urls accepted : 2152491 / 64000000 fast robots : 176962 fast no conn : 1113 fast no dns : 32408 too deep : 0 dup url : 3088901

Sites seen (dns call done) :

total number : 29007 + 0 (current rate : 1, overall rate : 4) with dns : 26816 (current rate : 1, overall rate : 3) with robots.txt : 13674 with good robots.txt : 12311 sites ready : 2644 sites without ip : 1838


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值