广度优先搜索 Breadth-First Search (BFS)
深度优先搜索 Depth-First Search (DFS)
网络爬虫:
从任何一个网页出发,用图的遍历算法,自动访问每个网页并把它们存储起来,完成这个功能的程序叫Web Crawlers.
构建网络爬虫的工程要点:
1、在有限时间里最多的爬下最重要的网页:
重要:首页。再扩大爬虫,从首页扩展链接。-----类似BFS
爬虫的分布式结构 和 网络通信的握手成本 有关。握手:下载服务器和网站的服务器建立通信的过程,这个过程需要额外时间。下载完一个网站才能再下载下一个网站------类似DFS
网络爬虫的遍历不是简单地BFS or DFS,有一个相对复杂的 下载优先级排序的方法----调度系统,同时存在一个优先级队列 Priority Queue。
2、页面的分析和URL的提取。
页面解析出URL比较复杂,需要模拟浏览器运行一个网页,才能得到里面隐含的URL。
3、记录哪些网页已经下载过的小本本——URL表。
采用哈希表,好处是,判断一个网页的URL是否在表中,平均只需要一次(或者略多的)查找。
问题:哈希表会很大,一个服务器存储不下。
多台服务器会对哈希表访问与维护,哈希表服务器的通信工作为瓶颈。
解答:明确每台下载服务器的分工,调度时看到某个URL就知道交给哪台服务器去下载。
明确分工之后,判断URL是否可以下载可以采用批问询和批处理,减少通信次数。