一 爬虫----下载html网页
1 广度优先还是深度优先,研究表明,按照广度优先搜索方式得到的网页集合要比深度优先搜索得到的集合重要
2 多线程和异步IO,爬虫下载网页分三个步骤:1)查询url的dns 2)socket连接服务器 3) 从服务器下载数据
只有把这三个步骤并行化才能加快抓取速度,采用的策略是,异步dns查询,多线程connect服务器,最后使用
select IO多路转接来下载数据,实践中发现最耗时的步骤是connect操作.
3 网页去重,把下载过的网页保存在一个大的hash table中
4 数据结构:一个保存待下载url的队列,一个保存已查询过dns的hash table, 一个保存已下载过url的hash table,
一个保存空闲连接的队列,一个保存正在下载连接的队列
二 html解析器----从网页内容中抽取单词,存放到数据库中
三 搜索----根据关键字搜索网页
四 网页排名