34、服务注册与监听:Worker节点与etcd交互你好,我是郑建勋。 这节课,让我们将Worker节点变为一个支持GRPC与HTTP协议访问的服务,让它最终可以被Master服务和外部服务直接访问。在Worker节点上线之后,我们还要将Worker节点注册到服务注册中心。 GRPC与Protocol...2025-12-13
33、固若金汤:限速器与错误处理你好,我是郑建勋。 我们前面的课程,由于一直都是不加限制地并发爬取目标网站,很容易导致被服务器封禁。为了能够正常稳定地访问服务器,我们这节课要给项目增加一个重要的功能:限速器。同时,我们还会介绍在Go中进行错误处理的最佳实践。 限速器先来看限速器。很...2025-12-13
32、存储引擎:数据清洗与存储你好,我是郑建勋。 爬虫项目的一个重要的环节就是把最终的数据持久化存储起来,数据可能会被存储到MySQL、MongoDB、Kafka、Excel等多种数据库、中间件或者是文件中。 要达到这个目的,我们很容易想到使用接口来实现模块间的解耦。我们还要解决...2025-12-13
31、规则引擎:自定义爬虫处理规则你好,我是郑建勋。 这一节课,我们重点来看看如何更合理地设置爬虫任务规则。之前,我们在查找租房信息时,已经实现了有一定扩展性的程序。通过在每一个请求中加入 ParseFunc 函数,可以实现灵活的请求规则。 12345678910// 单个请求typ...2025-12-13
30、辅助任务管理:任务优先级、去重与失败处理你好,我是郑建勋。 这节课,让我们给系统加入一些辅助功能,把爬虫流程变得更完善一些。这些功能包括:爬虫最大深度、请求不重复、优先队列、以及随机的User-Agent。 设置爬虫最大深度当我们用深度和广度优先搜索爬取一个网站时,为了防止访问陷入到死循环...2025-12-13