该题目来自阿里2014年秋季校园招聘《系统工程师》笔试题的附加题。

原题目为:

3.搜索引擎是很常用的web应用。大部分搜索引擎需要设计一个抓虫(Crawler),从很多网站抓去网页,分析数据,供搜索引擎使用。

设想你来做一个搜索引擎的爬虫,需要抓去约一百万家网站的网页内容。

1) 请画出一个抓虫系统的架构图。

2) 重点说明你的爬虫需要如何优化来提升性能。


查阅相关资料,做出以下解答:

爬宠系统大致分为以下几个部分,分别为:

爬虫模块:阶段性地抓取互联网上的内容

存储模块:存储爬虫下载下来的网页,是分布式的和可扩展的存储系统

解析模块:提取文本和网页的链接集合。

URL管理模块:重复消除模块决定一个解析出来的链接是否已经在URLFrontier或者最近下载过

索引模块:将抓取到的信息经过优化,建立索引

任务队列(URL集):需要爬取得网页列表

DNS模块:解析模块根据给定的URL决定从哪个Web服务器获取网页

请画出一个抓虫系统的架构图并说明你的爬虫需要如何优化来提升性能_搜索引擎

可以优化的地方:

爬虫模块并行

DNS缓冲

文本解析去重

建立索引时可以优化

URL去重也可能有优化算法