Skip to content

Commit

Permalink
feat: chapter 12
Browse files Browse the repository at this point in the history
  • Loading branch information
honkinglin committed Jan 21, 2025
1 parent 27f472d commit 7a4f817
Showing 1 changed file with 18 additions and 0 deletions.
18 changes: 18 additions & 0 deletions docs/grokking/chapter-12.md
Original file line number Diff line number Diff line change
Expand Up @@ -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` 文件,该文件包含相关声明。

0 comments on commit 7a4f817

Please sign in to comment.