论文部分内容阅读
爬虫程序是搜索引擎中十分重要的组成部分,本论文通过研究爬虫程序的现状自主设计并实现了一个爬虫程序spider。爬虫在信息采集时通常采用宽度优先或深度优先策略,在不同策略的基础上又增加了URL价值评估算法,进一步提高搜索的准确性和目的性。本文在设计spider程序时,通过比较和研究不同的爬虫搜索策略,在搜索策略上采用了一种基于URL目录深度的链接价值计算方法,该方法通过计算URL的目录深度来确定链接的权值,并将计算出的权值作为链接的重要性评估标准,实现一种启发式的宽度搜索策略。这种链接价值评估方式具有易于实现,提取重要页面速度快的特点,本文将这种计算方法和程序设计结合起来制定了可行的实现策略,并通过局部随机排序的方式来解决局部排名下陷的问题,弥补单一的URL权值计算策略的不足。
在实现上,spider程序将基于URL目录深度的链接估值方法加入到了程序的设计思路中,通过采用C++标准库容器在内存中存储URL列表,针对标准库容器自身排序速度快的特点,将每个链接的URL和权值进行一一对应存入容器,通过容器自身的排序算法对链接按权值大小进行时时刷新重排。除此之外,spider程序还实现了DNS缓存设计,IP访问域的控制,在网页去重设计上采用了URL和页面内容双重去重的方式。同时,spider程序采用Windows下的多线程程序设计方式,并结合HTTP1.1的特点实现了重复利用已有TCP连接,以此提高程序效率。对网页链接的提取区分了文本链接和图片链接,并通过自定义的网页存储格式存储在文件中,原始网页数据文件可以用于后期建立索引,同时将图片链接提取到文件中便于后期统一处理。
本文最后根据spider程序的设计目标对spider程序作了系统的测试,包括程序的功能测试和性能测试,功能测试包括验证程序设计的各个功能是否能正常工作.性能测试通过对校园网内网网页进行全网搜集,并做出了spider程序的搜集准确性分析曲线,通过横向比较分析,得出基于URL目录深度的权值计算方式可以快速地获取内网中的重要网页,尤其在网页抓取初期效果很明显,验证了基于URL目录深度的权值计算方法的有效性和可行性。