c++开源爬虫-Larbin简单介绍
原文地址:http://leihuang.net/2014/06/16/Larbin-Introduction/
由于近期学校实训。做的是一个搜索相关的项目,而且是c++的一个项目。所以就想到了larbin。于是接下来几天就现研究研究其源代码,再依据项目需求改动其源代码。
不多说,直接进入今天的正题。今天的目的就是简单了解下larbin。
Larbin简单介绍
larbin是一种开源的网络爬虫/网络蜘蛛。由法国的年轻人Sébastien Ailleret独立开发,用c++语言实现。larbin目的是可以跟踪页面的url进行扩展的抓取。最后为搜索引擎提供广泛的数据来源。
Larbin仅仅是一个爬虫,也就是说larbin仅仅抓取网页。至于怎样parse的事情则由用户自己完毕。
另外,怎样存储到数据库以及建立索引的事情 larbin也不提供。
latbin最初的设计也是根据设计简单可是高度可配置性的原则。因此我们能够看到。一个简单的larbin的爬虫能够每天获取500万的网页,实在是很高效。 利用larbin,我们能够轻易的获取/确定单个站点的全部联结,甚至能够镜像一个站点;也能够用它建立url 列表群。比如针对全部的网页进行 url retrive后。进行xml的联结的获取。或者是 mp3。或者定制larbin,能够作为搜索引擎的信息的来源。
Larbin官网:http://larbin.sourceforge.net/index-eng.html
How to use Larbin
因为Larbin开发环境是linux所以最好是在linux系统下运行以下的操作。
首先你肯定要下载larbin,能够当官网上下载,然后解压;也能够到我的github上下,命令例如以下。
git clone https://github.com/SpeedMe/larbin.git
进入到文件夹以下,命令段运行以下的命令:
./configure make ./larbin
怎样按自己方式配置larbin
此时你已经配置好了,而且执行了./larbin命令执行起来了。你能够訪问http://localhost:8081/了,可是你是依照官方默认的配置来执行该爬虫的,你也能够自己对其配置文件进行改动。你要改动的配置文件主要有两个options.h和larbin.conf。以下是我当网上找到的配置文件介绍。
每次改动larbin.conf后,不须要运行前两个命令,能够直接运行larbin即:./larbin 可是改动其它文件的时候就要三个命令都运行。
英文好的能够之间看官网上的配置文件介绍:http://larbin.sourceforge.net/custom-eng.html
最经常使用的改动是startUrl的值,即事实上网页的值,你也能够定义多个startUrl。
1、larbin.conf文件 ###############################################
//client标记。当对其它站点抓取时。被抓取的站点知道是什么抓取的 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 webserver的端口号(larbin执行时訪问http://localhost:8081/。设置为http_port 8081).假设将端口设为0,则不会启动webserver。通过这个能够查看爬行结果。 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
//訪问同一server的时间间隔。不可低于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 //不启动server。 不执行线程时非常实用 #define GRAPH //是否在状态也使用柱状图。 #define NDEBUG //不启动调试信息。 #define NOSTATS //不启动状态输出。 #define STATS //启动状态输出。执行时每一个一段时间就会输出抓取的状态。 #define BIGSTATS //在标准输出上显示每一个被抓去的网页名字。会减少larbin速度 #define CRASH //用于报告严重的bugs用。以gmake debug模式编译时使用。
当你熟悉了上面的配置文件之后,你差点儿相同就能玩转Larbin了,可是呢。有些只一样东西毕竟难以全部人的意愿,所以就须要我们自己来改动源代码了。然后改动之前,我们肯定要先将larbin的代码给过一遍。对它的源代码有一定研究之后再来改。
接下来的几天我就是现研究源代码,然后改动。
乐此不疲~
2014-06-16 21:09:22
c++开源爬虫-Larbin简单介绍的更多相关文章
- python爬虫:爬虫的简单介绍及requests模块的简单使用
python爬虫:爬虫的简单介绍及requests模块的简单使用 一点点的建议: (学习爬虫前建议先去了解一下前端的知识,不要求很熟悉,差不多入门即可学习爬虫,如果有不了解的,我也会补充个一些小知识. ...
- 基于python的知乎开源爬虫 zhihu_oauth使用介绍
今天在无意之中发现了一个知乎的开源爬虫,是基于Python的,名字叫zhihu_oauth,看了一下在github上面star数还挺多的,貌似文档也挺详细的,于是就稍微研究了一下.发现果然很好用啊.就 ...
- (转)开源爬虫larbin分析
转自风中之炎的博客:http://www.cnblogs.com/FengYan/archive/2012/02/04/2338630.html 1. larbin简介(百度百科) larbin是一种 ...
- LeeCX - 开源后台管理系统简单介绍
我们在github上开源了一个后台管理系统,使用了前端css框架并且简单的封装了一下,技术的将会不间断更新,详细可以点击原文链接.具体介绍如下: LeeCX 开源后台管理系统,前端基于bootstra ...
- Guava 开源工具的简单介绍
Guava 是一个 Google 的基于java1.6的类库集合的扩展项目,包括 collections, caching, primitives support, concurrency libra ...
- 开源爬虫Labin,Nutch,Neritrix介绍和对比
crawler 开发 语言 功能 单一 支持分布式 爬取 效率 镜像 保存 Nutch Java × √ 低 × Larbin C++ √ × 高 √ Heritrix Java √ × 中 √ ** ...
- GitHub开源库排名一百的简单介绍,值得收藏!
GitHub Android Libraries Top 100 简介 本项目主要对目前 GitHub 上排名前 100 的 Android 开源库进行简单的介绍, 至于排名完全是根据 GitHub ...
- 我的Android进阶之旅】GitHub 上排名前 100 的 Android 开源库进行简单的介绍
GitHub Android Libraries Top 100 简介 本文转载于:https://github.com/Freelander/Android_Data/blob/master/And ...
- 基于SIP和RTP协议的开源VOIP之QuteCom简单介绍
**************************************************************************************************** ...
随机推荐
- 有趣的console
博文第一篇,就以前端调试的“座上客”---console开始
- BZOJ 1085 / LOJ 2151 [SCOI2005]骑士精神 (剪枝/A*迭代搜索)
题目大意:略 直接爆搜会T,我们优化一下,统计出当前棋盘和目标棋盘不同的位置的数量k,那么当前棋盘变成目标棋盘最少的移动次数是k-1 每次选择一个最大深度ma,那么如果当前走了dep步,显然必须保证d ...
- Python求阴影部分面积
一.前言说明 今天看到微信群里一道六年级数学题,如下图,求阴影部分面积 看起来似乎并不是很难,可是博主添加各种辅助线,写各种方法都没出来,不得已而改用写Python代码来求面积了 二.思路介绍 1.用 ...
- Maven学习总结(22)——Maven常用插件介绍
我们都知道Maven本质上是一个插件框架,它的核心并不执行任何具体的构建任务,所有这些任务都交给插件来完成,例如编译源代码是由maven- compiler-plugin完成的.进一步说,每个任务对应 ...
- solr + eclipse 调试环境搭建
1: 在官网下载对应源码 http://www.fayea.com/apache-mirror/lucene/solr/4.1.0/ 选择源码文件,如图所示: 2: 解压后目录如图所示: 在根目录下存 ...
- codeforces 570 D Tree Requests
题意:给出一棵树.每一个结点都有一个字母,有非常多次询问,每次询问.以结点v为根的子树中高度为h的后代是否可以经过调整变成一个回文串. 做法: 推断能否够构成一个回文串的话,仅仅须要知道是否有大于一个 ...
- zjnu(1181)——石子合并
这道题算是最简单的区间dp了..非常久之前写的,搞懂原理了就1A. 传送门:problem_id=1181">http://acm.zjnu.edu.cn/CLanguage/show ...
- poj--2083--Fractal(dfs)
Fractal Time Limit: 1000MS Memory Limit: 30000KB 64bit IO Format: %I64d & %I64u Submit Statu ...
- nyoj--1057--寻找最大数(三)(贪心)
寻找最大数(三) 时间限制:1000 ms | 内存限制:65535 KB 难度:2 描述 给出一个整数N,每次可以移动2个相邻数位上的数字,最多移动K次,得到一个新的整数. 求这个新的整数的最大 ...
- hdoj--1301--Jungle Roads(克鲁斯卡尔)
Jungle Roads Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Tot ...