From adf3e46f710c86a38d4209fc59220b099f7fc7c2 Mon Sep 17 00:00:00 2001 From: Xargin Date: Fri, 24 Aug 2018 16:13:46 +0800 Subject: [PATCH] update cr --- ch6-cloud/ch6-09-crawler.md | 10 +++++++++- images/ch6-dist-crawler.png | Bin 0 -> 28858 bytes 2 files changed, 9 insertions(+), 1 deletion(-) create mode 100644 images/ch6-dist-crawler.png diff --git a/ch6-cloud/ch6-09-crawler.md b/ch6-cloud/ch6-09-crawler.md index 1418bba..0d80f6a 100644 --- a/ch6-cloud/ch6-09-crawler.md +++ b/ch6-cloud/ch6-09-crawler.md @@ -8,6 +8,10 @@ ## 基于 colly 的单机爬虫 +有很多程序员比较喜欢在 v2ex 上讨论问题,发表观点,有时候可能懒癌发作,我们希望能直接命令行爬到 v2ex 在 Go tag 下的新贴,只要简单写一个爬虫即可。 + +《Go 语言编程》一书给出了简单的爬虫示例,经过了多年的发展,现在使用 Go 语言写一个网站的爬虫要更加方便,比如用 colly 来实现爬取 v2ex 前十页内容: + ```go package main @@ -78,7 +82,11 @@ func main() { 想像一下,你们的信息分析系统运行非常之快。获取信息的速度成为了瓶颈,虽然可以用上 Go 语言所有优秀的并发特性,将单机的 CPU 和网络带宽都用满,但还是希望能够加快爬虫的爬取速度。在很多场景下,速度是有意义的: -1. 对于价格战期间的电商们来说,还是希望能够在对手价格变动后第一时间获取到其最新价格,再靠机器自动调整本家的商品价格。 +1. 对于价格战期间的电商们来说,希望能够在对手价格变动后第一时间获取到其最新价格,再靠机器自动调整本家的商品价格。 2. 对于类似头条之类的 feed 流业务,信息的时效性也非常重要。如果我们慢吞吞地爬到的新闻是昨天的新闻,那对于用户来说就没有任何意义。 所以我们需要分布式爬虫。从本质上来讲,分布式爬虫是一套任务分发和执行系统。而常见的任务分发,因为上下游存在速度不匹配问题,必然要借助消息队列。 + +![dist-crawler](../images/ch6-dist-crawler.png) + +上游的主要工作是根据预先配置好的起点来爬取所有的目标“列表页”。 diff --git a/images/ch6-dist-crawler.png b/images/ch6-dist-crawler.png new file mode 100644 index 0000000000000000000000000000000000000000..c8d1f9685140d4573de8f75bce31a8706d395961 GIT binary patch literal 28858 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