# 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