开始
通过爬虫自己做个检索来找房子,有了这个想法后就试着做一下,首先有一个大概思路:
- 写一个爬虫程序,尽可能解析出房子相关信息作为字段存储。
- 将数据存放在 ES(Elasticsearch)中便于查找。
- 使用 kibana 实现查询和分析,因其作为 ELK 经典组件,在查询分析上的强大优势不再多言。
需开发的爬虫可分为如下模块:
- 控制模块:作为起始开关和任务管理
- 抓取模块:输入一个网址,输出网页内容
- 解析模块:接收一段内容,输出有价值的字段信息,以及下一页等更多待解析的任务
- 存储模块:简单的做一个 map 进行运行时去重,然后将信息写入 ES
整个架构和其他爬虫基本一样,但自如为防止爬虫,搜索结果最多显示50页,对应办法就是遍历重要的查询参数,比如城市、地铁站、房子类型等。于是解析模块的顺序大概是:
1. 城市列表解析器,用来解析不同城市(当然这里只需要北京)
2. 地铁站解析器,用来解析出不同的地铁站
3. 房屋列表解析器,用来解析每一页的房屋列表和下一页待解析的任务
4. 房屋详情解析器,用来解析房屋的详细信息,如朝向、面积、户型、楼层、阳台、室友等
这里需要注意几点:
1. 爬虫使用 golang,它本身没有解析库,可以用第三方的 css 样式选择器、xpath,也完全可以用正则搞定,这里主要用正则实现,部分地方试用了下 css 选择器。