diff --git a/docs/grokking/chapter-12.md b/docs/grokking/chapter-12.md index 4333e2e..f49452a 100644 --- a/docs/grokking/chapter-12.md +++ b/docs/grokking/chapter-12.md @@ -20,3 +20,21 @@ - **可扩展性**:我们的服务需要具备可扩展性,能够抓取整个万维网,并用于获取数亿个网页文档。 - **可扩展性**:我们的服务应设计为模块化结构,以便在未来增加新功能。例如,可能需要下载和处理新的文档类型。 + +## 3. 一些设计考量 + +抓取万维网是一个复杂的任务,有多种实现方式。在进一步设计之前,我们需要提出以下问题: + +1. **爬虫是否仅针对 HTML 页面?还是需要抓取和存储其他类型的媒体(如音频文件、图像、视频等)?** + 这是一个重要问题,因为答案会影响设计。如果我们要构建一个通用爬虫,用于下载不同类型的媒体文件,可能需要将解析模块拆分为不同的子模块:一个用于 HTML,另一个用于图像,还有一个用于视频,每个模块提取对应媒体类型中有意义的内容。 + 目前假设我们的爬虫只处理 HTML,但应确保其可扩展性,以便未来能够轻松支持新媒体类型。 + +2. **爬虫将处理哪些协议?仅 HTTP?是否包括 FTP 链接?** + 我们的爬虫应支持哪些协议?为了当前的练习,假设只处理 HTTP。但设计应具有可扩展性,以便未来可以支持 FTP 和其他协议。 + +3. **预期爬取的页面数量是多少?URL 数据库的规模有多大?** + 假设我们需要爬取 10 亿个网站。由于每个网站可能包含许多 URL,我们可以假设爬虫需要访问的网页数量上限为 150 亿。 + +4. **什么是 RobotsExclusion?我们该如何处理?** + 礼貌的网页爬虫需要实现机器人排除协议(Robots Exclusion Protocol)。该协议允许网站管理员声明网站某些部分禁止爬虫访问。 + 机器人排除协议要求爬虫在抓取实际内容之前,先获取并解析网站的 `robots.txt` 文件,该文件包含相关声明。