`
hsmyy198712
  • 浏览: 14780 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

网络爬虫Larbin的学习(四)——基本数据结构

阅读更多
这一回介绍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源码 c++的网络爬虫

    网络爬虫larbin

    经典的网络爬虫,经典的larbin,采用asdn域名异步解析,单线程非阻塞模型。

    larbin-高效网络爬虫

    LINUX下的网络爬虫。larbin应当是一个被广大搜索引擎爱好者应当引起注意的一个产品,虽然其功能逐渐被 Nutch 所接受和替代,但是其在爬虫上的优美设计的确值得称道。

    larbin网络爬虫的体系结构[参照].pdf

    larbin网络爬虫的体系结构[参照].pdf

    larbin 网络爬虫

    larbin是一种开源的网络爬虫/网络蜘蛛

    larbin2.6.3爬虫程序

    larbin2.6.3爬虫,错误已全部改正,已在ubuntu下通过运行,可进行简单的爬网页任务。

    larbin的头文件可用于网络爬虫

    这个是larbin的头文件,其实这个在哪都可以找到,我只想要赚点积分。各位乡亲父老好不好啊?

    网络爬虫调研报告.doc

    网络爬虫调研报告 基本原理 Spider概述 Spider即网络爬虫 ,其定义有广义和狭义之分。狭义上指遵循标准的 http协议利用超链接和 Web文档检索的方法遍历万维网信息空间的软件程序 ;而广义的定义则是所有能遵循 http...

    网络爬虫调研报告(1).doc

    体顶端 网络爬虫调研报告 基本原理 Spider概述 Spider即网络爬虫 ,其定义有广义和狭义之分。狭义上指遵循标准的 http协议利用超链接和 Web文档检索的方法遍历万维网信息空间的软件程序 ;而广义的定义则是所有能遵循 ...

    网络爬虫调研报告(2).doc

    窗体顶端 网络爬虫调研报告 基本原理 Spider概述 Spider即网络爬虫 ,其定义有广义和狭义之分。狭义上指遵循标准的 http协议利用超链接和 Web文档检索的方法遍历万维网信息空间的软件程序 ;而广义的定义则是所有能...

    如何配置Larbin - 翻译

    关于Larbin网络爬虫的权威文档,你可以在这里学会Larbin的详细配置方法,让你的Larbin工作得更好

    Larbin

    主要是网络爬虫,整个网络进行景象,得到网络资源

    网络蜘蛛Larbin的设计和优化.kdh

    网络蜘蛛Larbin的设计和优化,Larbin是利用c++开发的一种网络爬 虫,由法国人Sebastien Ailleret发布,因此 它是开源的(基于GPL标准)。Larbin最初 开发出来是为了XYLEME工程。Larbin的 目的是在网络上抓取xml页面,然后...

    larbin源码分析全解

    主要是分析larbin开源爬虫的源代码,主要思路是先从global文件中的各个重要的结构开始讲解、分析代码。

    论文研究-Larbin的设计与优化 .pdf

    Larbin的设计与优化,叶建平,,搜索引擎是万维网能够更好为人类利用的重要工具。而网络爬虫是搜索引擎的核心组成部分。Larbin是一个高效,比较简单,而且功能比较

    网站监控系统的爬虫和数据库

    网站监控系统的配套爬虫(larbin)和数据库文件(mysql)

    从Larbin看互联网爬虫设计

    一个高手写的东西 值得一看

    larbin源代码

    larbin是一种开源的网络爬虫/网络蜘蛛,由法国的年轻人 Sébastien Ailleret独立开发。larbin目的是能够跟踪页面的url进行扩展的抓取,最后为搜索引擎提供广泛的数据来源。 larbin是一个被广大搜索引擎爱好者应当...

    larbin-2.6.3

    开源的网络爬虫,一个外国年轻人写的,有一定的参考价值,附件带有移植到windows的参考文档

    修改好的larbin源代码

    修改好的larbin源代码,可以直接在ubuntu8.10下编译使用

Global site tag (gtag.js) - Google Analytics