第 9 章 一个网络爬虫框架的设计和实现

在前面的几个部分中,我们已经对Go语言的特性、开发环境、语法、各种编程方法和技巧等方面进行了大量、详尽的介绍和梳理,并且还着重描述和说明了Go语言在并发编程方面的特性,以及它与早先的并发编程模型相比的优势。我在讲解上述知识的同时,展示了许多示例来辅助和巩固读者对它们的理解。这些示例有些穿插于字里行间,而有些则作为独立的实战演练环节出现。相信读者在仔细阅读这些示例中的代码并按照要求进行练习之后,就能够编写出可以正确甚至高效运行的应用程序了。

作为本书的最后一章,我们将完整地展现一个应用程序的设计、编写和试用的过程,从而将本书讲到的所有Go语言知识和编程技巧从头至尾地贯穿起来。在这个过程中,我会帮助你回忆起Go语言的诸多特性(尤其是并发编程方面的特性)以及应用方法,并设法增强你对它们的记忆和理解。同时,通过这个程序的编写和讲解,我也会让读者真正明白怎样将Go语言用到实处。在读过本章之后,我们会得到一个开箱即用并且易于扩展的工具类程序。由本章的题目可知,这个工具类程序即是一个网络爬虫框架。

之所以选择这个主题,是因为它不会掺杂太多与本书主题关系不大的逻辑和功能。例如,一些面向某一个领域的数据结构和通讯协议的定义,以及其他一些被用于构建复杂的应用系统的细枝末节。这样做可以让我们把焦点一直落在Go语言上。而对于那些更加宏观的应用系统架构设计方面的内容,我们就不在此赘述了。它们的范围太大且与本书主题关联甚微。读者完全可以在熟悉Go语言之后,再通过其他途径了解怎样构建大规模、高复杂度的应用程序或系统,并以此在更大的范围内发挥Go语言的威力。

现在,让我们立即开启这次Go语言编程实战之旅。