数学之美-第9章图论与网络爬虫笔记


1)用BFS还是DFS?

不考虑时间因素互联网静态不变的情况下,认为两者能够在大致的时间里完成所有的整个静态网页的爬取工作。

工程上,做不到,网络爬虫更应定义为“如何在有限的时间里最多的爬下那些重要的网页”,一般认为一个网页的首页是重要的。因此BFS优于DFS。

但并非不使用DFS,这和爬虫的分布式结构以及网络通信的握手成本有关,“握手”指下载服务器与网站的服务器建立通信的过程。

时间网络爬虫是由成百上千万服务器组成的分布式系统,对于某一个网页,一般由特定的一台或者几台服务器专门下载,这样可以避免握手次数太多。

实际应用的网络爬虫不是对网页次序的简单BFS或者BFS,而是一个相对复杂的下载优先级排序的方法,叫做“调度系统”(Scheduler),会有一个优先队列(Priority QueueBFS成分更加多一些。

2)网页的分析和URL提取

除了HTML以外,不少网页是一些脚本语言(比如JavaScript)生成

3)记录访问过的URL,URL表

哈希表判重在一台下载服务器上建立和维护一张哈希表并不难,如果分布式,多台服务器一起下载网页,就会出现问题:

1、哈希表太大,一台下载服务器存不下。

2、每台下载服务器在开始下载前和完成下载后都要维护这哈希表,存储哈希表的通信就成为爬虫系统的瓶颈。

比较好的问题2的解决方法:A、明确每台下载服务器的分工,一看到某个URL就知道交给哪台服务器去执行B、批量处理,减少通信的次数

 

 

你可能感兴趣的:(数学之美-第9章图论与网络爬虫笔记)