《数学之美》笔记|《数学之美》笔记 图论与网络爬虫

离散数学包括数理逻辑,集合论,图论,近世代数。
图论
哥尼斯堡七桥问题(图论的起源):只有每个点的度都是偶数的情况才能不重复地遍历每个顶点。
爬虫
下载互联网上的所有网页(网页当做节点,超链接作为边)需要用到图论的遍历算法。完成这个功能的程序叫做网络爬虫。
【《数学之美》笔记|《数学之美》笔记 图论与网络爬虫】“如何构建一个网络爬虫”是一个很好的面试问题,考察计算机科学理论基础,算法能力和工程素养。
策略
现实中的网络爬虫的任务应该定义成“如何在有限时间内爬下最重要的网页”,这种情况下BFS遍历明显优于DFS。但是考虑到下载服务器和网页服务器的连接具有握手成本,(网络爬虫是有上千台服务器组成的分布式系统)那么就由一个或几个服务器专门下载一个网页,下载完一个网站再进入下一个。这又是DFS的概念。所以这个优先级队列的调度系统是DFS和BFS的优化。
一些网页是由js写的,需要运行才能得到URL,有些脚本写的不规范,以至于难以解析,因此需要浏览器内核工程师来写网络爬虫的解析程序。所以会有爬虫爬不到的网页。
为了记录一些网页是否已经被下载过,需要用一个哈希表进行记录。那么需要维护一个庞大的哈希表,解决方法是明确每个下载服务器的分工,然后批处理询问(每次更新一大批哈希表内容)。

    推荐阅读