/~learn/s/e9f94f3c
adata 目前覆盖股票、ETF、债券、舆情四大板块,缺少房地产这座与宏观经济紧密联动、与个人财富高度相关的数据金矿。新增房产数据板块后,可以补齐「宏观—地产—股市—债市」的量化分析闭环。
核心目标:建成一个支持 省→市→区县→商圈→小区 五级粒度下钻、覆盖 价格+成交+挂牌+租赁 四维指标的房产数据模块,直接嵌入 adata 的 Python 包体系和 Web 可视化界面。
中国不存在全国统一的 MLS(多重上市服务)系统,各地房管局的网签数据也是一个信息孤岛。所有可用的数据源分为三个梯队:
| 数据源 | 粒度 | 指标 | 历史 | 接入方式 |
| -------- | ------ | ------ | ------ | ---------- |
| 国家统计局 easyquery API | 全国/分省/70城 | 开发投资额、销售面积/额、新开工/竣工面积、70城新房&二手房价指数(环比/同比/定基) | 2010年起 | HTTP POST,无需注册 |
| 数脉/聚合数据 API | 70城 | 新房&二手住宅价格指数 | 2010年起 | REST API,免费额度 600次/月 |
优点:免费、权威、稳定。 缺点:粒度仅仅到城市(且只有70个),没有区县级和小区级的数据。
结论:这个作为第一阶段的先发数据源。成本为零,实现 API 封装即可上线。
| 数据源 | 粒度 | 指标 | 更新频率 | 接入方式 |
| -------- | ------ | ------ | ---------- | ---------- |
| 诸葛找房开放平台 | 城市→区县→商圈→小区 | 挂牌均价、在售套数、涨跌幅、新增挂牌 | 每日 | 需签合作协议 |
| 安居客付费 API | 城市→区县→商圈 | 均价、房源量、趋势 | 每日 | 阿里云市场 / API Key |
| 房天下付费 API | 城市→区县 | 均价、成交量 | 每日 | API Key 认证 |
优点:结构化数据、粒度细、更新频率高。 缺点:需要付费或签订商业合同,成本每月数百到数千元不等。
结论:作为第二阶段的数据补充,按需接入。建议优先评估诸葛找房,因为它是聚合型平台,数据覆盖最广。
| 数据源 | 粒度 | 核心指标 | 数据质量 | 反爬强度 | 历史深度 |
| -------- | ------ | ---------- | ---------- | ---------- | ---------- |
| 链家/贝壳 | 城市→区县→商圈→小区→房源 | 挂牌均价、成交均价、成交套数、成交周期、调价记录 | ⭐⭐⭐⭐⭐ 最高 | ⭐⭐⭐⭐ 强 | 2015年起 |
| 安居客 | 城市→区县→商圈→小区→房源 | 均价、在售量、价格走势 | ⭐⭐⭐ 中等 | ⭐⭐⭐ 中 | 2017年起 |
| 房天下 | 城市→区县→小区 | 均价、走势 | ⭐⭐⭐ 中等 | ⭐⭐ 低 | 2017年起 |
| 58同城 | 城市→区县→房源 | 个人房源挂牌 | ⭐⭐ 较低 | ⭐⭐⭐⭐ 强 | 近3年 |
优点:粒度最细、指标最丰富、能拿到真实成交数据(链家)。 缺点:工程复杂度高,需要 Playwright/Selenium + 住宅代理池 + 反爬对抗,且存在法律合规风险。
结论:作为第三阶段的终极数据方案,仅对少数重点城市(北上广深+省会)开启爬虫采集。
数据范围:全国+31省+70大中城市的房价指数及开发投资数据。
技术方案:
easyquery API,封装到 adata/real_estate/macro/ 模块下# 获取70城新房价格指数(月度)
real_estate.macro.get_70city_new_house_price_index(city="北京", start="2020-01")
# 获取70城二手房价格指数(月度)
real_estate.macro.get_70city_second_hand_price_index(city="北京", start="2020-01")
# 获取分省房地产开发投资数据(年度)
real_estate.macro.get_province_investment(province="广东", year=2023)
# 获取全国商品房销售面积/额(月度)
real_estate.macro.get_national_sales(start="2020-01")
# 列出所有可用指标树
real_estate.macro.list_indicators()
数据表设计:
-- 70城房价指数月度表
CREATE TABLE IF NOT EXISTS real_estate_70city_price_monthly (
id INTEGER PRIMARY KEY AUTOINCREMENT,
city TEXT NOT NULL, -- 城市名称
data_type TEXT NOT NULL, -- new_house / second_hand
index_type TEXT NOT NULL, -- month_on_month / year_on_year / fixed_base
stat_month TEXT NOT NULL, -- 统计月份 如 2024-06
index_value REAL, -- 指数值
created_at TEXT DEFAULT CURRENT_TIMESTAMP,
UNIQUE(city, data_type, index_type, stat_month)
);
-- 分省房地产开发投资年度表
CREATE TABLE IF NOT EXISTS real_estate_province_annual (
id INTEGER PRIMARY KEY AUTOINCREMENT,
province TEXT NOT NULL,
indicator TEXT NOT NULL, -- 指标名称
stat_year INTEGER NOT NULL, -- 统计年份
value REAL, -- 数值
unit TEXT, -- 单位
created_at TEXT DEFAULT CURRENT_TIMESTAMP,
UNIQUE(province, indicator, stat_year)
);
在第一阶段稳定后,引入诸葛找房或安居客的商业 API,获取城市→区县→商圈级别的日常挂牌、成交、租赁数据。
数据范围:重点20-30个城市,下钻到区县/商圈。
核心接口:
# 获取城市均价走势(日/周/月)
real_estate.city.get_price_trend(city="上海", district="浦东新区", freq="monthly")
# 获取商圈挂牌量&成交量
real_estate.city.get_district_supply_demand(city="上海", district="浦东新区")
# 获取城市整体租赁价格走势
real_estate.city.get_rental_trend(city="上海", district="浦东新区")
针对重点城市(北京、上海、深圳、广州、杭州)开启链家贝壳爬虫,获取小区级别的成交、挂牌数据。
技术栈:Python + Playwright + 住宅代理池 + Scrapy + SQLite 持久化。
爬虫策略:
核心接口:
# 获取小区均价&走势
real_estate.community.get_community_price_trend(
city="上海", district="浦东新区", community="陆家嘴花园"
)
# 获取小区历史成交明细
real_estate.community.get_transaction_history(
city="上海", community="陆家嘴花园", start="2020-01"
)
# 获取小区在售房源列表(匿名化后的统计摘要)
real_estate.community.get_listing_summary(
city="上海", community="陆家嘴花园"
)
完全遵循 adata 现有的门面模式+模板模式:
adata/real_estate/ # 新模块目录
├── __init__.py # RealEstate 门面类,导出 real_estate 单例
│ class RealEstate:
│ def __init__(self):
│ self.macro = RealEstateMacro() # 宏观数据
│ self.city = RealEstateCity() # 城市明细数据
│ self.community = RealEstateCommunity() # 小区精微数据
│
├── macro/
│ ├── __init__.py # RealEstateMacro 聚合类
│ ├── nbs_api.py # 国家统计局 easyquery 接口实现
│ └── template.py # 列名常量和接口定义
│
├── city/
│ ├── __init__.py # RealEstateCity 聚合类
│ ├── zhuge.py # 诸葛找房 API 实现
│ └── template.py
│
├── community/
│ ├── __init__.py # RealEstateCommunity 聚合类
│ ├── lianjia_spider.py # 链家爬虫实现
│ └── template.py
│
└── db/
├── __init__.py
├── schema.sql # 建表 SQL
└── core.py # DB 连接和初始化
在顶级 adata/__init__.py 中注册:
from adata.real_estate import real_estate
在 unified_server.py 中新增数据展示入口:
主页增加「🏠 房产」模块卡片,点击进入 /real-estate 页面。
/real-estate/ # 房产数据总览仪表板
├── /real-estate/overview # 全国房价热力图 + 关键指标卡片
├── /real-estate/city/{city} # 城市详情页(房价趋势图+供需分析)
└── /real-estate/community/{id} # 小区详情页(历史成交+价格走势)
为外部量化策略调用提供数据接口:
GET /api/real-estate/price-index?city=上海&type=new_house&start=2020-01
GET /api/real-estate/province-investment?province=广东&year=2023
GET /api/real-estate/community-trend?city=上海&community=陆家嘴花园
| 数据层 | 缓存策略 | 更新频率 | 过期时间 |
| -------- | ---------- | ---------- | ---------- |
| 宏观数据 | CSV 文件缓存 (同 stock/market/data_cache/ 模式) | 月度拉取 | 45天过期 |
| 城市明细 | SQLite 增量写入 (INSERT OR REPLACE) | 每日增量 | 最新即有效 |
| 小区精微 | SQLite 按小区分表,日增量 + 月全量校验 | 每周爬取 | 14天过期 |
| 阶段 | 项目 | 预估费用 |
| ------ | ------ | ---------- |
| 第一阶段 | 国家统计局 API | 免费 |
| 第二阶段 | 诸葛找房 API(评估后) | 0 - 5000元/月 |
| 第三阶段 | 住宅代理池 | 200 - 800元/月 |
| 第三阶段 | 服务器(如需独立爬虫) | 100 - 300元/月 |
real_estate 模块骨架unified_server.py Web 可视化界面---
*方案起草日期:2026-06-28*