# 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           # 本文件
```

## 安装与运行

### 依赖安装
```bash
cd /app/houseDream
npm install
```

### 手动运行

```bash
# 启动 Web 服务器
npm run server

# 执行完整爬取（截图+数据提取）
npm run daily

# 仅截图
npm run screenshot
```

### PM2 管理（推荐）

```bash
# 启动服务
pm2 start server.js --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)
- **后端**: Node.js + 原生 HTTP 模块
- **前端**: HTML5 + CSS3 + Vanilla JavaScript
- **进程管理**: PM2

## 环境变量

| 变量 | 默认值 | 说明 |
|------|--------|------|
| `PORT` | 8080 | 服务器监听端口 |

## 注意事项

1. 数据文件永久保留，不会自动清理
2. 页面使用 Playwright 获取完整渲染后的内容
3. 服务器默认绑定到 localhost，如需外网访问请修改 server.js 中的监听地址

## 许可证

ISC
