爬虫Larbin解析(一)——Larbin配置与使用

简介:

介绍

功能:网络爬虫

开发语言:c++

开发者:Sébastien Ailleret(法国)

特点:只抓取网页,高效(一个简单的larbin的爬虫可以每天获取500万的网页)

 

安装

安装平台:Ubuntu 12.10

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

安装:

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

期间会出现错误,解决

1. adns文件夹下internal.h文件569-571行:

adns_status adns__parse_domain(adns_state ads, int serv, adns_queryqu,
         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);

 

2. 输入sudo ./congure 出现错误

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
make[2]: 正在进入目录 `/home/byd/test/larbin-2.6.3/src/utils'
makedepend -f- -I.. -Y *.cc 2> /dev/null > .depend
make[2]: *** [dep-in] 错误 127
make[2]:正在离开目录 `/home/byd/test/larbin-2.6.3/src/utils'
make[2]: 正在进入目录 `/home/byd/test/larbin-2.6.3/src/interf'
<span style= "color: #ff0000;" ><strong>makedepend</strong></span> -f- -I.. -Y *.cc 2> /dev/null > .depend
make[2]: *** [dep-in] 错误 127
make[2]:正在离开目录 `/home/byd/test/larbin-2.6.3/src/interf'
make[2]: 正在进入目录 `/home/byd/test/larbin-2.6.3/src/fetch'
makedepend -f- -I.. -Y *.cc 2> /dev/null > .depend
make[2]: *** [dep-in] 错误 127
make[2]:正在离开目录 `/home/byd/test/larbin-2.6.3/src/fetch'
make[1]: *** [dep] 错误 2
make[1]:正在离开目录 `/home/byd/test/larbin-2.6.3/src'
make: *** [dep] 错误 2

上边提示makedepend 有问题,于是输入makedepend,提示

makedepend 没安装,但是可以通过

sudo apt-get install xutils-dev

ok了。

 

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

using namespace std;

然后,继续

make

 

运行

 ./larbin

可以在浏览器上输入"localhost:8081"看当前爬虫的运行状况

终止

 ctrl+c

 重启

./larbin -scratch

 

 再次启动larbin时出现错误(只输入命令 ./larbin)

larbin_2.6.3 is starting its search
Unable to get the socket for the webserver (8081) : Address already in use

原因

当客户端保持着与服务器端的连接,这时服务器端断开,再开启服务器时会出现: Address already in use

解决

netstat -anp | more

可以看到(如下图),杀死进程即可

kill -9 18066

 

其中

  • 在Internet RFC标准中,Netstat的定义是: Netstat是在内核中访问网络及相关信息的程序,它能提供TCP连接,TCP和UDP监听,进程内存管理的相关报告
  • kill - 9 表示强制杀死该进程(最好少用,他是强制性的,即使是系统进程也会杀掉的

 

配置

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配置与使用

Larbin的安装与配置 





本文转自jihite博客园博客,原文链接:http://www.cnblogs.com/kaituorensheng/p/3676851.html,如需转载请自行联系原作者


相关文章
|
4月前
|
数据采集 数据挖掘 测试技术
Go与Python爬虫实战对比:从开发效率到性能瓶颈的深度解析
本文对比了Python与Go在爬虫开发中的特点。Python凭借Scrapy等框架在开发效率和易用性上占优,适合快速开发与中小型项目;而Go凭借高并发和高性能优势,适用于大规模、长期运行的爬虫服务。文章通过代码示例和性能测试,分析了两者在并发能力、错误处理、部署维护等方面的差异,并探讨了未来融合发展的趋势。
365 0
|
6月前
|
数据采集 Java API
深度解析:爬虫技术获取淘宝商品详情并封装为API的全流程应用
本文探讨了如何利用爬虫技术获取淘宝商品详情并封装为API。首先介绍了爬虫的核心原理与工具,包括Python的Requests、BeautifulSoup和Scrapy等库。接着通过实战案例展示了如何分析淘宝商品页面结构、编写爬虫代码以及突破反爬虫策略。随后讲解了如何使用Flask框架将数据封装为API,并部署到服务器供外部访问。最后强调了在开发过程中需遵守法律与道德规范,确保数据使用的合法性和正当性。
|
2月前
|
数据采集 机器学习/深度学习 人工智能
反爬虫机制深度解析:从基础防御到高级对抗的完整技术实战
本文系统阐述了反爬虫技术的演进与实践,涵盖基础IP限制、User-Agent检测,到验证码、行为分析及AI智能识别等多层防御体系,结合代码实例与架构图,全面解析爬虫攻防博弈,并展望智能化、合规化的发展趋势。
反爬虫机制深度解析:从基础防御到高级对抗的完整技术实战
|
2月前
|
数据采集 运维 监控
爬虫与自动化技术深度解析:从数据采集到智能运维的完整实战指南
本文系统解析爬虫与自动化核心技术,涵盖HTTP请求、数据解析、分布式架构及反爬策略,结合Scrapy、Selenium等框架实战,助力构建高效、稳定、合规的数据采集系统。
爬虫与自动化技术深度解析:从数据采集到智能运维的完整实战指南
|
8月前
|
数据采集 人工智能 监控
40.8K star!让AI帮你读懂整个互联网:Crawl4AI开源爬虫工具深度解析
Crawl4AI 是2025年GitHub上备受瞩目的开源网络爬虫工具,专为AI时代设计。它不仅能抓取网页内容,还能理解页面语义结构,生成适配大语言模型的训练数据格式。上线半年获4万+星标,应用于1200+AI项目。其功能亮点包括智能内容提取引擎、AI就绪数据管道和企业级特性,支持动态页面处理、多语言识别及分布式部署。技术架构基于Python 3.10与Scrapy框架,性能卓越,适用于AI训练数据采集、行业情报监控等场景。相比Scrapy、BeautifulSoup等传统工具,Crawl4AI在动态页面支持、PDF解析和语义分块方面更具优势
2954 0
40.8K star!让AI帮你读懂整个互联网:Crawl4AI开源爬虫工具深度解析
|
2月前
|
数据采集 存储 JavaScript
解析Python爬虫中的Cookies和Session管理
Cookies与Session是Python爬虫中实现状态保持的核心。Cookies由服务器发送、客户端存储,用于标识用户;Session则通过唯一ID在服务端记录会话信息。二者协同实现登录模拟与数据持久化。
|
9月前
|
存储 缓存 网络协议
阿里云特惠云服务器99元与199元配置与性能和适用场景解析:高性价比之选
2025年,阿里云长效特惠活动继续推出两款极具吸引力的特惠云服务器套餐:99元1年的经济型e实例2核2G云服务器和199元1年的通用算力型u1实例2核4G云服务器。这两款云服务器不仅价格亲民,而且性能稳定可靠,为入门级用户和普通企业级用户提供了理想的选择。本文将对这两款云服务器进行深度剖析,包括配置介绍、实例规格、使用场景、性能表现以及购买策略等方面,帮助用户更好地了解这两款云服务器,以供参考和选择。
|
9月前
|
数据采集 JSON API
深入解析:使用 Python 爬虫获取淘宝店铺所有商品接口
本文介绍如何使用Python结合淘宝开放平台API获取指定店铺所有商品数据。首先需注册淘宝开放平台账号、创建应用并获取API密钥,申请接口权限。接着,通过构建请求、生成签名、调用接口(如`taobao.items.search`和`taobao.item.get`)及处理响应,实现数据抓取。代码示例展示了分页处理和错误处理方法,并强调了调用频率限制、数据安全等注意事项。此技能对开发者和数据分析师极具价值。
|
7月前
|
域名解析 应用服务中间件 Shell
使用nps配置内网穿透加域名解析
使用nps配置内网穿透加域名解析
872 76
|
4月前
|
数据采集 存储 Web App开发
Python爬虫库性能与选型实战指南:从需求到落地的全链路解析
本文深入解析Python爬虫库的性能与选型策略,涵盖需求分析、技术评估与实战案例,助你构建高效稳定的数据采集系统。
404 0

推荐镜像

更多
  • DNS