144 lines
3.3 KiB
Markdown
144 lines
3.3 KiB
Markdown
# 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
|
||
bun install
|
||
```
|
||
|
||
### 手动运行
|
||
|
||
```bash
|
||
# 启动 Web 服务器
|
||
bun run start
|
||
|
||
# 开发模式(文件变更自动重启)
|
||
bun run dev
|
||
|
||
# 执行完整爬取(截图+数据提取)
|
||
bun run daily
|
||
|
||
# 仅截图
|
||
bun run screenshot
|
||
```
|
||
|
||
### Playwright 浏览器安装
|
||
|
||
首次安装依赖后请执行:
|
||
|
||
```bash
|
||
bunx playwright install chromium
|
||
```
|
||
|
||
### PM2 管理(推荐)
|
||
|
||
```bash
|
||
# 启动服务
|
||
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 | 服务器监听端口 |
|
||
|
||
## 注意事项
|
||
|
||
1. 数据文件永久保留,不会自动清理
|
||
2. 页面使用 Playwright 获取完整渲染后的内容
|
||
3. 默认监听地址为 127.0.0.1,可通过环境变量 HOST 修改
|
||
|
||
## 许可证
|
||
|
||
ISC
|