《数学之美》第9章 图论和网络爬虫

1 图论

    图论的起源可追溯到大数学家欧拉所处的那个年代。

    图论中所论的图由一些节点和连接这些节点的弧组成。

    广度优先搜索(Breadth-First Search, 简称BFS)

    深度优先搜索(Depth-First Search, 简称DFS)

2 网络爬虫

    在网络爬虫中,人们使用一种“散列表”(Hash Table, 也叫哈希表)而不是记事本记录网页是否下载过的信息。

    现在的互联网非常庞大,不肯能通过一台或几台计算机服务器就能完成下载任务。一个商业的网络爬虫需要成千上万个服务器,并且通过高速网络连接起来。

3 图论的两点补充

    3.1 欧拉七桥问题的证明

        对于图中的每一个顶点,将与之相连的边的数量定义为它的度。

        定理:如果一个图能够从一个顶点出发,每条边不重复地遍历一遍回到这个顶点,那么每一顶点的度必须为偶数。

        证明:假如能够便利图的每一条边各一次,那么对于每个顶点,需要从某条边进入顶点,同时从另一条边离开这个顶点。进入和离开顶点的次数时相同的,因此每个顶点有多少条进入的边,就有多少条出去的边。也就是说,每个顶点相连的边的数量是成对出现的,即每个顶点的度必须是偶数。

    3.2 构建网络爬虫的工程要点

        首先,用BFS还是DFS?

            网络爬虫对网页遍历的次序不是简单的DFS和BFS,而是有一个相对复杂的下载优先级排序的方法。

            管理这个优先级排序的子系统一般称为调度系统,由它来决定当一个网页下载完成后,接下来该下载哪一个。

            在爬虫中,BFS的成分多一些。

        第二,页面的分析和URL的提取

            若你发现一些网页明明存在,但搜索引擎没有收录,一个可能的原因是网络爬虫中解析程序没有成功解析网页中不规范的脚本程序。

        第三,记录哪些网页已经下载过的小本本--URL表

            为了防止一个网页被下载多次,我们可以用一个散列表来记录哪些网页已经下载过,再遇到这个网页时,我们就可以跳过它。

            如何解决存储散列表的服务器的通信就成了整个爬虫系统的瓶颈。

                首先,明确每台下载服务器的分工。

                然后,在明确分工的基础上,判断URL是否下载就可以批处理了,比如每次向散列表发送一批询问,或者每次更新一大批散列表的内容。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值