咕噜气泡 租房小程序的设计与实现

震惊! 扫描下方二维码,居然看到身边有这些东西!

更新历史
  • 2017.5.1 除了杭州外,支持北京,上海,广州的租房地图
  • 2017.5.25 加入联系客服功能

换房子的时候各种找中介,在中介那里踩过几个坑(大概就是不知距离的情况下跨域半个城市去看破烂出租屋的那种),然后被身边某位身经百战的朋友传授了一点人生经验——去豆瓣杭州租房小组里面,按照发帖时间扫帖。这个帖子很可能是中介发的。。。特点就是更新时间和发帖时间相差能超过一星期。。。我还见过一年前的帖子被顶上来。不过总体来说,上面的房源很大一部分是转租或者房东自己放出来的,直接联系起来,成功率较高

然后这位朋友还大胆提出,要做一个租房地图,能直观的在地图上看到附近的租房信息,而且这个数据是从豆瓣上拿到的。很明显这个需求提不到豆瓣的开发那里去,然后就提给了我。我觉得这个想法是很好的,虽然某些龌蹉的朋友会觉得地图上如果展示的不是租房小组的帖子,而是交(yue)友(pao)小组的话,更有意思。

从设计到开发再到后面审核通过,大概是一周半,其中开发用了一个周末和零星的睡前时间~

1.产品定位

一个租房地图,能根据用户选择的地理位置显示附近的房源,房源来自豆瓣杭州租房小组发帖:https://www.douban.com/group/145219/

提供过滤功能和收藏功能。

  • 用户能定向检索某些房源。
  • 用户能保存感兴趣的房源。

主页面交互见附图1、2,收藏页交互见附图3

2.技术方案

  • 前端页面是微信小程序的那套轮子,没得选。我不是什么专业前端,脚手架也懒得搭,直接撸原生的。

  • 数据大都是读操作,也没有强一致的要求,而且格式比较自由,选择用mongod来搞。

  • 数据源的话,只能写一套网络爬虫,定时去抓取豆瓣租房小组的帖子,试了一把,抓前100页的数据,居然没有出现被ban的情况,连反爬都不用去实现了。这个爬下来的数据不可能一直放着,我的服务器没剩多少G给我玩儿了,暂定保存10天。

  • 调度系统,我这儿有两个定时任务,爬虫爬最新的帖子和删除数据库里面超过10天的旧数据。考虑过celery和APScheduler,后者是基于Quartz,公司同事弄过一套java的,重的一逼。思考良久,还不如直接写个python脚本,用supervisor保护下。目前是这样做了,效果还不错,每天凌晨3点钟顺序执行这两个调度,帖子数目维持在3000左右。

调度日志效果

WARNING:root:*** middle night,delete old data finish! *** 2017-04-27 02:09:32  
WARNING:root:middle night,start crawl new data 2017-04-27 03:19:32  
WARNING:root:middle night,start delete old data 2017-04-28 02:01:59  
WARNING:root:*** middle night,delete old data finish! *** 2017-04-28 02:01:59  
WARNING:root:middle night,start crawl new data 2017-04-28 03:11:59  
  • 地理位置获取是个坑。数据是论坛的帖子,里面不可能直接拿到经纬度,甚至准确提取地名都是问题。刚好公司有一个输入法的项目,想到了输入联想里面,大都会有地名提示。网上找了一下,发现搜狗输入法有一部分词库数据是提供免费下载的,里面是简单加密的文本,位移一下就能得到干净的地名词库,有兴趣可以自己搜一下。做一个简单的模式匹配,就能从“城西西城广场单间出租 带独卫 价格只需要1500 独门..”这种句子里面提取出城西和西城广场这两个关键词,然后调用腾讯地图的免费api,获得精确的经纬度信息~。比较坑的是搜狗的词库是13年左右的,相对于杭州这种城建速度飞起的地方,信息滞后略严重。所以目前这个租房地图,位置显示是有点问题的,当然,也有一部分原因是很多帖子里面就没有有效的地名。

3.后期优化

  • 提取帖子里面的价格信息,能通过价格筛选,目前只做了合租之类的关键字过滤

  • 界面优化一下,现在丑的一逼。。。

  • 数据源扩展一下,至少能支持北上广的豆瓣租房数据。还有就是这个产品其实拓展性很强的,我爬的是租房信息,所以是租房地图,如果爬交友信息,就是(yue)(pao)地图。。。。怨念。。。

附图1 附图2 附图3

刘摸鱼

退堂鼓表演艺术家

杭州