网络爬虫(四)-----宽度优先遍历互联网(实现思想)

                        大笑 呵呵,大笑在这里小渣还是先说明一点哦,我们大家都是在不断努力嘛,这个博客是自己学习自己动手写网络爬虫的心得,也难免有错,大家一起谈讨加油哦,么么哒~~~ 

                                                                          宽度优先遍历互联网-----实现思想                                                                                                                     生气在上一节中,我们说了宽度优先遍历的思想基础,把这个算法放在互联网爬虫项目中,怎么实现呢?

         生气实际爬虫项目是从一系列大的种子链接开始的。所谓的种子链接,就像是宽度优先遍历的种子节点。简而言之:实际的爬虫项目种子链接可以有多个,而宽度优先遍历中的种子节点只有一个。比如我们可以指定www.hao123.com。 

                                  先说:爬虫中的子节点与终端节点

           每一个HtmL页面 或者其他文件(word,excel,pdf),在这些文件中,只有HTML页面有相应的子节点,这些子节点就是HTMl页面上对应的超链接  。如hao123网页中,一些比如淘宝啊,优酷啊,京东啊,这些便是hao123中的子节点。这些子节点本身又是一个链接,对于非HTML文档,比如Excel文件,不能从中提取超链接,因此,可以看作是图的终端节点,就好像是上节中的BCDIG。

                                   继续:爬虫过程

   

                       这是我们一般所使用的hao123。我们就举这个例子吧。

           整个宽度优先爬虫的过程:从一系列的种子节点开始,(简单理解,可以说从一个开始,与上一节相呼应)把这些网页的的子节点(也就是超链接)提取出来,放入队列中依次进行抓取,被处理过的链接需要放入一张表(Visited,也就是标记已经访问了)。每次新处理一个链接之前,需要朝看这个链是否在visited中,如果在呢,就证明已经处理了,跳过,否则下一步处理。

        图解过程如下:

    

       我们耐性看一下这个图:

    首先 初始化的URL地址是爬虫系统中提供的种子URL(一般在系统的配置文件中指定 )。当解析这些种子URL所表示的网页时候,会产生新的URL(比如从网页中的<a href="http://www.baidu.com">提取http://www.baidu.com这个链接)。然后,我们要做:

       1.把解析出来的链接和visited表中的链接进行比较,如果visited表中不存在此链接,表示没有访问过。

       2.把链接放入TODO表

       3.处理完毕后,在此从TODO表中取一条链接,直接放入Visited表中。

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

                   宽度优先遍历说是爬虫中使用最广泛的一种爬虫策略,为什么?

      原因:

          1重要的网页往往离种子比较近,例如我们打开新闻网站,往往是最新的和热门的,越后面重要性越来越低。      

           2万维网的实际深度最多能达到17层,(具体的理论验证我也不是很懂)但是达到某个网页总存在一条很短的路径,而宽度优先遍历会以最快速度到达。

           3,宽度优先有利于多爬虫的合作抓取,多爬虫合作通常先抓取站内链接,抓取的封闭性很强。需要实际编码才会深刻体会。

            

                                                                                    



  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值