这一回介绍Larin中的基本数据结构,其实这一部分对于每一个高水平的程序来说,都是相似的,但是在此还是废话一下。
首先从我接触到的第一个数据结构开始(因为我在详细阅读代码前首先做了些源代码修改工作)——Vector
(1)%LARBIN_HOME%/src/utils/Vector
这个类唯一值得一提的就是他的存储空间优化机制。这在大量的数据结构中都有。
它有两个成员变量:
uint pos;
uint size;
其中pos代表vector的使用容量,size代表vector的占用容量。
当占用容量不够用,vector就需要进行一次扩容。代码中是扩1倍容量,如果还不够,就扩到当前需要的量。
vector的使用处:大家应该还记得第2部分中,用户可以参与的程序部分。
也就是loaded()函数,他的参数是一个html。它里面包含一个vector用于存储当前页面指向的链接。如果需要输出特定的链接关系(用于PR)的话,那么就需要用到这个结构。
(2)%LARBIN_HOME%/src/utils/url
这个类主要处理url相关的一些基本问题。他的成员变量中包含Host,port等url的基础组成部分。
它的内部包含两个hashcode的算法,一个是求对整体url的hash值,一个是对Host求hash值。
这两个求值用在的地方也不太一样。在后面会详细介绍。
(3)%LARBIN_HOME%/src/utils/Fifo
这个类就是模拟一个队列,当然,在他里面也包含了扩容的算法。按需扩容的思想在整个程序中有很好地体现。具体的队列算法想来十分简单了。
这个类还有两个相关的类:syncFIfo和PersistentFifo,前者支持同步,后者支持同步和备份(文件存储),在具体的使用中再看他们的用途。
(4)%LARBIN_HOME%/src/utils/NameSite
这个类是一个比较重要的类,这个爬虫爬行过程的一些核心代码就在这里面。首先,它是一组站点的集合,他的成员变量分为两个部分:
网址部分:
char name[maxSiteSize]
uint16 port
队列部分:
uint16 nburl
url *fifo[maxUrlsBySite]
uint8 inFifo
uint8 outFifo
在队列中会保存一定量的url,当某个url需要被处理时,则将这个url取出,保存在网址部分的变量中。
在这个类的函数中,还包含一些DNS解析的功能,这些在流程分析中再谈。
(5)%LARBIN_HOME%/src/utils/IPSite
这个类和上面的类类似,不过他保存的就已经是IP地址了。这个类的结构略显简单,它里面也是包含一个fifo,在这个类中包含了一个功能函数,就是fetch,其实这个函数只是对待访问站点进行连接,并不做真正的内容读取。
还有一些类,比如string,text,hashTable,hashDup就不做介绍了,因为这些类的内容比较少,大家一看名字便知他的含义。
下一次将对Larbin的实现细节做一些分析。
分享到:
相关推荐
larbin源码 c++的网络爬虫larbin源码 c++的网络爬虫larbin源码 c++的网络爬虫
经典的网络爬虫,经典的larbin,采用asdn域名异步解析,单线程非阻塞模型。
LINUX下的网络爬虫。larbin应当是一个被广大搜索引擎爱好者应当引起注意的一个产品,虽然其功能逐渐被 Nutch 所接受和替代,但是其在爬虫上的优美设计的确值得称道。
larbin网络爬虫的体系结构[参照].pdf
larbin是一种开源的网络爬虫/网络蜘蛛
larbin2.6.3爬虫,错误已全部改正,已在ubuntu下通过运行,可进行简单的爬网页任务。
这个是larbin的头文件,其实这个在哪都可以找到,我只想要赚点积分。各位乡亲父老好不好啊?
网络爬虫调研报告 基本原理 Spider概述 Spider即网络爬虫 ,其定义有广义和狭义之分。狭义上指遵循标准的 http协议利用超链接和 Web文档检索的方法遍历万维网信息空间的软件程序 ;而广义的定义则是所有能遵循 http...
体顶端 网络爬虫调研报告 基本原理 Spider概述 Spider即网络爬虫 ,其定义有广义和狭义之分。狭义上指遵循标准的 http协议利用超链接和 Web文档检索的方法遍历万维网信息空间的软件程序 ;而广义的定义则是所有能遵循 ...
窗体顶端 网络爬虫调研报告 基本原理 Spider概述 Spider即网络爬虫 ,其定义有广义和狭义之分。狭义上指遵循标准的 http协议利用超链接和 Web文档检索的方法遍历万维网信息空间的软件程序 ;而广义的定义则是所有能...
关于Larbin网络爬虫的权威文档,你可以在这里学会Larbin的详细配置方法,让你的Larbin工作得更好
主要是网络爬虫,整个网络进行景象,得到网络资源
网络蜘蛛Larbin的设计和优化,Larbin是利用c++开发的一种网络爬 虫,由法国人Sebastien Ailleret发布,因此 它是开源的(基于GPL标准)。Larbin最初 开发出来是为了XYLEME工程。Larbin的 目的是在网络上抓取xml页面,然后...
主要是分析larbin开源爬虫的源代码,主要思路是先从global文件中的各个重要的结构开始讲解、分析代码。
Larbin的设计与优化,叶建平,,搜索引擎是万维网能够更好为人类利用的重要工具。而网络爬虫是搜索引擎的核心组成部分。Larbin是一个高效,比较简单,而且功能比较
网站监控系统的配套爬虫(larbin)和数据库文件(mysql)
一个高手写的东西 值得一看
larbin是一种开源的网络爬虫/网络蜘蛛,由法国的年轻人 Sébastien Ailleret独立开发。larbin目的是能够跟踪页面的url进行扩展的抓取,最后为搜索引擎提供广泛的数据来源。 larbin是一个被广大搜索引擎爱好者应当...
开源的网络爬虫,一个外国年轻人写的,有一定的参考价值,附件带有移植到windows的参考文档
修改好的larbin源代码,可以直接在ubuntu8.10下编译使用