欧拉七桥问题是图论的开始。
如果一个图能够从一个顶点出发,每条边不重复的遍历一遍回到这个定点,那么顶点度必须为偶数。
广度优先搜素(Breadth-First Search):尽可能“广”的访问每个节点直接连接的其他节点。
深度优先搜索(Depth-First Search):一条路走到黑。
网络爬虫(Web Crawlers)是通过超链接,从任意一个网页出发,用图的遍历算法,自动的访问到每一个网页并把它们存起来的程序。
第一个网络爬虫——网络漫游者是由麻省理工学院的马休 · 格雷写成。
如何构建一个网络爬虫?
用BFS还是DFS?网页爬虫对网页遍历从次序有一个相对复杂的下载优先级排序的子系统即调度系统。当然在调度系统里要存储那些已经发现但是尚未下载的网页的URL,他们一般存在一个优先级队列,而用这种方式遍历互联网,在工程上和BFS更相似。但也不是不用DFS,对于某个网站一般是由特定的一台或者几台服务器专门下载。这些服务器下载完一个网站,然后再进入下一个网站,而不是每个网站轮流下载5%,然后回过头来下载第二批。
页面的分析和URL的提取。
记录哪些网页已经下载过的小本本——URL表。
采用哈希表的好处是判断一个网页的URL是否在表中,平均只需要一次的查找。如果遇到没有下载的网页,除了下载该网页,还需要在下载完成后,将这个网页的URL存到哈希表中。
而多个服务器维护一张哈希表,这个存储哈希表的服务器的通信就成了爬虫系统的瓶颈。首先要明确每台下载服务器的分工。然后判断URL是否下载就可以批处理了,比如每次向哈希表发送一大批询问,或更新一大批内容,就可以大大减少通信次数。
本文涉及到的人物及其著作:
欧拉、马休 · 格雷
来源:oschina
链接:https://my.oschina.net/u/1398794/blog/383934