作品 / 深圳房产智能分析平台
数据与洞察 · DATA2025NO.06个人项目

深圳房产智能分析平台

给深圳买首套房的人看的楼市台账——住建局公示里的新房与二手房自动收进来,核一个盘的备案价与去化从半小时降到几秒

Vue3TypeScriptGoGinSQLiteEChartsDocker
深圳房产智能分析平台 界面截图
1 / 1

缘起

看房那阵子我存了十几个楼盘的链接。一房一价表是图片,去化数据要翻主管部门的公告,价格每个中介给我一份说法——想把一个盘的备案价、剩余套数、去化率凑齐,半个多小时就没了,周末跑三个盘回来,笔记还是对不上,因为没有一处能把它们放在一起看。

这个项目最早只是我自己的一张表:楼盘、备案价、剩余套数、更新日期。

背景

要把这张表做可靠,得解决几件事。数据来源分散且形态不一:公示平台是结构化表格,销售现场是图片,中介口径是文字,得分别采集再对齐到同一个楼盘上。指标口径也要统一——什么算批准套数、什么算已签约、去化率按房源还是按面积、价格取备案均价还是最近成交,不同来源给的不是同一个东西。有了口径才谈得上比较:库存变化、价格走向、片区热度,以及刚需真正关心的那一句「现在是不是贵了」。

方案

按「把数据拉回来 → 对齐口径 → 摊开来看 → 盯住变化」这条链路做的:

  • 自动把公示数据收进来:定时从住建局公开的新房预售与二手房成交公示接口分区分页采集,慢速礼貌请求,不打扰对方服务器;同一批数据按区域按天去重,只留一份
  • 先对齐口径再谈比较:一房一价、楼栋、户型、销售状态分别采下来后归到同一个楼盘上;同名多预售证自动合并。「什么算已售」「去化率按套还是按面积」「热盘和将罄的线划在哪」都定死一套算法,页面上每项指标旁边就写着它怎么算
  • 一眼看清市场:各区在售 / 已售 / 去化率、楼盘去化排行(热盘与将罄自动标出)、近 7 天供应走势,附数据截止时间
  • 看一个盘能看到底:单价的最低 / 中位 / 最高、标准差、四分位数、折扣率,面积段与得房率,低中高楼层分布与楼层热力图,销售状态占比
  • 多个盘放一起比:最多 5 个楼盘并排比价格、比去化、比库存,雷达图、柱状图、数据表三种视图,每项指标的最优值自动高亮
  • 二手房另有一套看法:价格区间与挂牌时长分布、中介分布、笋盘与高挂标记(低于或高于项目均价 5%)、按挂牌时长折算的合理估价、面积与总价散点、近 12 个月价格趋势、库存健康度
  • 盯着的盘变了会告诉你:收藏楼盘后,价格或在售率有变动就推送到企业微信,不用天天自己回来刷
  • 每次分析都留档:同一楼盘加楼栋加户型,下次打开能直接和上一次比,价格是涨是跌、在售率降到多少都有对照
  • 导出:一键导出 CSV(UTF-8 BOM),Excel 打开不乱码,方便自己再做二次加工

技术架构

模块技术选型
后端Go 1.25 + Gin + SQLite(WAL 模式,纯 Go 驱动,交叉编译不需要 CGO)
前端Vue3 + TypeScript + Vite + Element Plus + ECharts + Axios,12 个组件
采集7 个公开公示接口(新房 4 个 / 二手房 3 个),分区调度 + 会话轮换 + 随机延迟
统计标准差、四分位数、折扣率、库存健康度在本机自算,不依赖外部计算服务
展示单页多 Tab;768px 以下换成手机版布局与底部 Tab,与桌面端共用同一套接口
部署Docker / docker-compose;单进程同时托管前端静态产物与接口,对外只有一个端口

管道分四段:采集 → 口径对齐 → 落库 → 统计与呈现。采集侧按行政区逐页抓,同一区域采集完成后写入供应快照(同区同日去重);采集有独立的事件日志记录成功、跳过与失败条数,任务支持中途暂停与续爬,重启后不会从头再抓一遍。重复查询走缓存层,避免每次重新计算。

前端在 window.innerWidth <= 768 时切换成另一套手机版模板(房源明细与历史记录从表格换成卡片流,图表边距与坐标轴标签同步收窄),不是简单的响应式缩放。

成果

  • 覆盖量:二手房源 106,174 套、新房在售 16,882 套、已售 54,563 套,覆盖深圳 12 个行政区(龙岗 27,175、宝安 18,897、南山 17,354、福田 14,858、罗湖 13,778 …)。数据是真实采集来的,后台持续在跑、不断更新
  • 从半小时以上到几秒:核一个盘的备案价、剩余套数、去化率,以前要翻公告、对图片表、听中介说法,凑齐得半小时以上;现在搜索框敲个楼盘名,几秒出结果
  • 看房那阵子是真的在用:拿它做信息收集和横向对比——哪个片区货多、哪个盘快卖完、同一个盘最近是涨还是跌,不再靠一方的说法
  • 口径写在页面上:去化率的分子分母、热盘与将罄的判定线、笋盘和高挂的 5% 阈值、合理估价的挂牌时长折扣,每项指标下面都写着算法,看到的数字能追溯到怎么算出来的
  • 一台机器就能跑:数据落在本地单文件数据库,不需要另装数据库服务;局域网内手机、平板打开同一个地址就能看

体验

线上演示在 https://sz.bennywen.xyz —— 里面是真实采集的数据,直接就能点。手机浏览器打开同一个网址会自动换成手机版布局。

本地跑起来也一样:服务启动后浏览器打开本机地址即可,局域网内其他设备用同一个地址也能访问;数据是一个随服务走的单文件,换台机器拷过去就接着用。

MANUAL · 说明书

它到底能做什么、怎么跑起来

散文讲的是「为什么做」,这一节讲的是「它到底是什么」——可直接对照评估。

01 / 规格
数据来源
深圳市住房和建设局公开的新房预售房源与二手房成交公示信息,定时自动采集更新
覆盖范围
深圳 12 个行政区的新房在售房源、已售房源与二手挂牌房源
交付形态
本地运行的单个服务,一个进程同时提供页面与数据接口,数据库是随服务走的单文件
访问方式
浏览器打开即可用;同一个网址在手机上自动换成手机版布局;局域网内其他设备也能访问
指标口径
去化率、热盘、将罄、笋盘、高挂、合理估价等判定规则都写在页面上,数字对得上算法
数据更新
后台定时刷新二手房源;新房可手动触发采集,支持中途暂停与接着爬
02 / 功能清单
  • 市场总览各区在售与已售套数、去化率、近 7 天供应走势,一眼看出哪个片区货多、哪个快卖完
  • 去化排行按去化率排楼盘,自动标出热盘(80% 以上)与将罄(90% 以上且剩不到 20 套)
  • 楼盘检索关键词加区域筛选,同名多预售证自动合并;选楼盘后楼栋与户型联动
  • 价格分析最低、中位、最高单价,加上标准差、四分位数与折扣率,判断这个价是贵还是便宜
  • 户型与楼层面积段与得房率分布、低中高楼层各有多少套,配一张楼层热力图
  • 销售状态在售、已备案、已签认购书、已签合同各占多少,一眼看清这个盘卖到哪一步
  • 多盘对比最多 5 个楼盘并排比价格、比去化,雷达图、柱状图、数据表三种视图,最优项自动高亮
  • 二手房分析价格区间与挂牌时长分布、中介分布、笋盘与高挂标记、按挂牌时长折算的合理估价
  • 历史与提醒每次分析自动存档,下次能对比同一楼盘楼栋户型的价格与在售率变化;收藏的盘有变动推送到企业微信
  • 数据导出一键导出 CSV,Excel 直接打开不乱码,方便自己再做二次加工
03 / 部署与运行
  • 要什么环境:一台能跑起来的电脑或服务器就行,不需要另装数据库;也提供了容器化部署方式
  • 多久起得来:启动服务后浏览器打开本机地址即可使用,局域网内手机和平板用同一个地址也能看
  • 怎么维护:数据是一个随服务走的单文件,备份就是拷这个文件;采集在后台定时跑,页面上能看到进度
04 / 已知限制
  • 数据来自公开公示接口,可能有延迟或口径差异,不等于实时网签数据,也不构成购房或投资建议
  • 只覆盖公示范围内的项目:采集时按立项 10 年内过滤,更早的老盘不在里面
  • 采集是本地进程里的定时任务,机器关掉就不再更新,重新打开后接着采
  • 价格与挂牌时长都基于公示数据计算,和中介门店的口径可能有出入

有类似的事要管?

说说现在是怎么做的——Excel、微信群、纸质单子都行。我判断能不能做、大概怎么做。

聊聊你的需求