HouseDream - 北京市房地产数据监控系统
自动爬取、提取并可视化展示北京市住房和城乡建设委员会的房地产交易数据。
功能特性
- 自动爬取: 使用 Playwright 定时抓取官方页面数据
- 数据提取: 结构化提取商品房和存量房交易统计
- 截图存档: 每日完整页面截图保存
- 可视化展示: Web 界面展示历史数据,支持日期切换
- API 接口: 提供 RESTful API 供外部调用
数据模块
商品房数据统计
- 可售期房统计
- 预售许可(上月汇总)
- 期房网上认购(当日)
- 期房网上签约(当日)
- 未签约现房统计
- 现房项目情况
- 现房网上认购(当日)
- 现房网上签约(当日)
存量房网上签约统计
- 月签约统计
- 日签约统计
存量房维度统计
- 按经纪机构统计(Top 10)
- 按所在区县统计
- 按建筑面积统计
项目结构
/app/houseDream/
├── data/ # JSON 数据文件
├── pic/ # 每日页面截图
├── web/ # 前端界面
│ ├── index.html # 主页面
│ ├── style.css # 样式
│ ├── app.js # 前端逻辑
├── scripts/ # 后端脚本
│ ├── daily.js # 完整爬取流程
│ └── screenshot.js # 仅截图
├── public/ # 公共资源
│ └── extract.js # 数据提取逻辑
│ └── define.js # 数据定义
├── server.js # Web 服务器
├── package.json # 项目配置
└── README.md # 本文件
安装与运行
依赖安装
cd /app/houseDream
bun install
手动运行
# 启动 Web 服务器
bun run start
# 开发模式(文件变更自动重启)
bun run dev
# 执行完整爬取(截图+数据提取)
bun run daily
# 仅截图
bun run screenshot
Playwright 浏览器安装
首次安装依赖后请执行:
bunx playwright install chromium
PM2 管理(推荐)
# 启动服务
pm2 start "bun run start" --name houseDream
# 查看状态
pm2 list
pm2 logs houseDream
# 重启/停止
pm2 restart houseDream
pm2 stop houseDream
# 设置开机自启
pm2 save
pm2 startup
API 接口
| 接口 | 方法 | 说明 |
|---|---|---|
/ |
GET | 可视化界面 |
/api/dates |
GET | 获取可用日期列表 |
/api/data/YYYY-MM-DD |
GET | 获取指定日期数据 |
/pic/YYYY-MM-DD.png |
GET | 获取指定日期截图 |
数据来源
- 官方网址: http://bjjs.zjw.beijing.gov.cn/eportal/ui?pageId=307749
- 来源机构: 北京市住房和城乡建设委员会
技术栈
- 爬虫: Playwright (Chromium)
- 后端: Bun + Bun.serve
- 前端: HTML5 + CSS3 + Vanilla JavaScript
- 进程管理: PM2
环境变量
| 变量 | 默认值 | 说明 |
|---|---|---|
BASE_DIR |
当前工作目录 | 项目根目录(用于定位 data/pic/web/public) |
HOST |
127.0.0.1 | 服务器监听地址 |
PORT |
8080 | 服务器监听端口 |
注意事项
- 数据文件永久保留,不会自动清理
- 页面使用 Playwright 获取完整渲染后的内容
- 默认监听地址为 127.0.0.1,可通过环境变量 HOST 修改
许可证
ISC
Description
Languages
JavaScript
77.7%
HTML
10.2%
CSS
8%
Shell
4.1%