首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > perl python >

宽度优先遍历爬虫的python兑现

2012-10-11 
宽度优先遍历爬虫的python实现网上很著名的一本爬虫教程《自己手动写网络爬虫》,该书所有源码是用java编写的

宽度优先遍历爬虫的python实现

网上很著名的一本爬虫教程《自己手动写网络爬虫》,该书所有源码是用java编写的,

其中提到了宽度优先遍历算法,闲来无事我把他用python实现了一遍。代码量少了将近一半,呵呵。


宽度优先算法介绍

参考:http://book.51cto.com/art/201012/236668.htm

整个的宽度优先爬虫过程就是从一系列的种子节点开始,把这些网页中的"子节点"(也就是超链接)提取出来,放入队列中依次进行抓取。被处理过的链接需要放入一张表(通常称为Visited表)中。每次新处理一个链接之前,需要查看这个链接是否已经存在于Visited表中。如果存在,证明链接已经处理过,跳过,不做处理,否则进行下一步处理。

初始的URL地址是爬虫系统中提供的种子URL(一般在系统的配置文件中指定)。当解析这些种子URL所表示的网页时,会产生新的URL(比如从页面中的<a href= "http://www.admin.com"中提取出http://www.admin.com这个链接)。然后,进行以下工作:

(1)?把解析出的链接和Visited表中的链接进行比较,若Visited表中不存在此链接,表示其未被访问过。

(2)?把链接放入TODO表中。

(3)?处理完毕后,再次从TODO表中取得一条链接,直接放入Visited表中。

(4)?针对这个链接所表示的网页,继续上述过程。如此循环往复。

表1.3显示了对图1.3所示的页面的爬取过程。

表1.3? 网络爬取

热点排行