使用 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
了。