使用 GoColly 抓取贝壳房源信息

使用 Golang 的爬虫工具 Gocolly 抓取贝壳的出租房源信息。由于公司项目之一是长租公寓 SaaS 管理系统,需要为公寓的老板或管家们提供当地的租房价格参考。出于对 Golang 学习的目的,没有采用 Python 那些成熟的爬虫框架,而是采用了 Gocolly,抓取的数据存储在 MongoDB

项目已开源,请参考以下地址。

https://github.com/phpha/gocolly-beike/

1、说明

目前贝壳所支持的城市,按是否有小区信息分为 2 种,处理的方式也不一样。

针对大中型城市,是存在小区信息的,那么我们先抓取小区信息,再循环抓取每个小区下面的租房信息;

针对小城市,不存在小区信息,那么我们就直接循环商圈开始抓取。

抓取顺序:城市 -> 区域 -> 商圈 -> 小区 -> 房源列表 -> 房源详情

目前支持以下城市,具体可以参考 config/url.go 中的配置信息。其中编号 <= 100 的城市存在小区信息。

1
2
3
4
5
6
7
8
[1]北京[2]上海[3]武汉[4]厦门[5]长沙[6]广州[7]深圳[8]杭州[9]天津[10]成都
[11]西安[12]南京[13]重庆[14]合肥[15]佛山[16]东莞[17]廊坊[18]苏州[19]大连[20]沈阳
[21]青岛[22]济南[23]烟台
[101]福州[102]郑州[103]泉州[104]漳州[105]兰州[106]江门[107]珠海[108]惠州[109]中山[110]湛江
[111]清远[112]柳州[113]桂林[114]北海[115]贵阳[116]海口[117]三亚[118]石家庄[119]洛阳[120]新乡
[121]开封[122]哈尔滨[123]宜昌[124]襄阳[125]黄石[126]常德[127]株洲[128]长春[129]无锡[130]常州
[131]徐州[132]南通[133]镇江[134]淮安[135]南昌[136]上饶[137]呼和浩特[138]银川[139]威海[140]淄博
[141]太原[142]咸阳[143]绵阳[144]昆明[145]宁波[146]绍兴[147]雄安新区

2、代码

GolangGocolly 的安装请参考:基于Golang的网络爬虫Go-Colly

1
2
3
4
// 编译
go build main.go
// 调用|抓取[1]北京
main -cityid=1

可以写个计划任务脚本

1
2
3
4
5
6
7
8
9
#!/bin/bash

echo "[`date +"%Y-%m-%d %H:%M:%S"`]//////////START//////////"
city_id=(1 2 3 4 5 101)
for v in ${city_id[@]}; do
    echo "[`date +"%Y-%m-%d %H:%M:%S"`]//////////[#${v}#]//////////"
    /data/golang/project/gocolly/bin/main -cityid=$v >> /data/cronlog/beike-$v.log 2>&1
done
echo -e "[`date +"%Y-%m-%d %H:%M:%S"`]///////////END///////////\n"