使用 GoColly 抓取贝壳房源信息
使用 Golang 的爬虫工具 Gocolly 抓取贝壳的出租房源信息。由于公司项目之一是长租公寓 SaaS 管理系统,需要为公寓的老板或管家们提供当地的租房价格参考。出于对 Golang 学习的目的,没有采用 Python 那些成熟的爬虫框架,而是采用了 Gocolly,抓取的数据存储在 MongoDB。
使用 Golang 的爬虫工具 Gocolly 抓取贝壳的出租房源信息。由于公司项目之一是长租公寓 SaaS 管理系统,需要为公寓的老板或管家们提供当地的租房价格参考。出于对 Golang 学习的目的,没有采用 Python 那些成熟的爬虫框架,而是采用了 Gocolly,抓取的数据存储在 MongoDB。
在分布式系统中,我们经常需要生成一个唯一的 ID,或用于订单,或用于其他场景。总之基本的要求就是要唯一且高效。对这个 ID 还希望其中能带有一些时间信息,这样即使我们后端的系统对记录进行了分库分表,也能够以时间顺序对这些记录进行排序。Twitter 的 snowflake 算法是这种场景下的一个典型解法。
相对于 PHP 而言,Golang 里面的获取时间应该说是很不方便有木有。因此,特意封装了以下项目中常用到的获取时间相关的函数。
本文基于 Golang 的爬虫框架 Go-Colly 进行数据抓取,然后存储到 MongoDB 数据库。根据搜索结果,相对来说最成熟的 MongoDB 驱动,应该是 mgo,但是目前 mgo 的作者已经停止维护。另外 MongoDB 官方也已经有对应 Golang 的驱动 mongo-go-driver,但是 Google 上相关的资料并不多。
因项目需要,要对网络上某些信息进行抓取,以便加工后做数据分析。提到爬虫框架,知名度最高的当属基于Python的爬虫框架 Scrapy。但是由于本人对 Python 并不熟悉,并且暂时也不准备去深入学习,因此不在考虑范围。同时也是基于学习的目的,因此选择了 Golang 方向。基于 Golang 的成熟爬虫框架其实并不多,因此在选择上不用太纠结,就用 Go-Colly 了。