链家租房数据采集、反爬、分析与可视化一体化平台,助力高效数据洞察与决策
探索功能特性 »
快速部署
·
Docker部署
·
贡献指南
English | 简体中文 | 繁體中文
本项目已停止维护。
由于贝壳/链家当前的人机验证机制已经升级,不再是本仓库原先适配的滑块验证码方案,现有自动化采集链路已无法保证可用。
本仓库将保留为历史实现与数据分析/前端架构参考,不再继续跟进新的验证码适配。如果你只想复用分析与可视化部分,建议改为接入自有或合规的数据源。
链家租房数据采集与分析系统曾是一个基于Python+Vue3构建的租房数据处理平台,目标是完成链家/贝壳租房数据的自动化采集、数据存储、分析和可视化展示。后端使用FastAPI构建API服务,爬虫模块结合DrissionPage实现浏览器自动化控制,数据处理采用PySpark进行批量分析,使用pgsql作为主要数据库存储爬取的房源数据和分析结果。前端基于Vue3和Element Plus构建用户界面,通过ECharts实现数据可视化。当前仓库更适合作为历史实现参考,尤其是数据处理、任务编排与前端展示部分。
本项目主要爬取贝壳找房数据,理论上也支持链家数据(贝壳是链家旗下平台,两者技术架构相似,反爬机制相同)。
系统默认爬取贝壳数据,如需切换链家只需修改配置域名,数据格式完全兼容。
- 支持单城市、多页面的自动化数据爬取
- 历史版本曾支持滑块验证码处理;当前站点验证已升级,该能力已失效
- IP代理池管理与轮换策略
- 定时任务和任务队列管理
- 区域分析:各区域租金水平、房源数量分布
- 房型分析:不同户型的价格特征和供需情况
- 价格分布分析:租金价格分布规律和异常值检测
- 价格趋势分析:租金价格的时间变化趋势
- 多维交叉分析:房型、区域、价格等多因素关联分析
- 用户注册、登录和身份认证
- 基于JWT的安全访问控制
- 用户设置与个人资料管理
- 账户安全保护(密码加密存储等)
- 爬虫任务管理与监控
- 数据库配置与管理
- 系统设置与参数调整
- 代理IP管理
- 定时任务调度配置
- 编程语言:Python 3.10+
- Web框架:FastAPI
- 数据分析:PySpark, Pandas
- 爬虫技术:Selenium, DrissionPage, BeautifulSoup
- 数据库:PostgreSQL
- 认证授权:JWT, Bcrypt
- 任务调度:Schedule
- 框架:Vue3
- UI组件库:Element UI Plus
- 图表可视化:ECharts
- 状态管理:Vuex
- 路由管理:Vue Router
- HTTP客户端:Axios
- 版本控制:Git
- 开发环境:VSCode, PyCharm
- 容器化:Docker (可选)
系统采用前后端分离的三层架构:
-
数据采集层:
- 爬虫引擎:控制爬取流程和策略
- 验证码处理器:处理各类验证码
- IP管理器:维护和轮换代理IP
-
数据处理与存储层:
- 数据处理引擎:清洗、转换和分析数据
- 数据存储服务:管理数据库和文件存储
- 分析引擎:执行复杂的数据分析任务
-
应用服务层:
- API服务:提供RESTful接口
- 认证服务:处理用户认证和授权
- 前端应用:提供用户界面和交互
- Python 3.10+
- PostgreSQL 14+
- Node.js 14+
- Java 8+ (用于运行PySpark)
- 克隆代码仓库
git clone https://github.com/LeapYa/Awesome-lianjia-data-analysis-system.git
cd Awesome-lianjia-data-analysis-system- 安装uv
# Windows
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex
# Linux/Mac
curl -LsSf https://astral.sh/uv/install.sh | sh3.创建并激活虚拟环境
python -m venv venv
# Windows
venv\Scripts\activate
# Linux/Mac
source venv/bin/activate- 安装依赖
uv pip install -r requirements.txt- 配置数据库
# 创建PostgreSQL数据库(密码为 leapyaleapya123)
createdb -h localhost -p 5432 -U postgres rental_analysis
# 初始化数据库表结构
psql -h localhost -p 5432 -U postgres -d rental_analysis -f init.sql💡 配置说明
项目已包含预配置的
.env文件,默认数据库密码为leapyaleapya123。 如需修改,请编辑.env文件中的DB_PASSWORD字段。
- 进入前端目录
cd frontend- 安装依赖
npm install- 构建前端应用
npm run build- 启动后端API服务
uv run uvicorn api:app --reload- 启动前端开发服务器(开发模式)
cd frontend
npm run serve- 访问系统
在浏览器中访问
http://localhost:8080
⚠️ 初始登录信息首次部署时的登录凭据:
- 用户名:
admin- 密码:
admin123
本项目提供了开箱即用的Docker Compose配置,已预配置好.env文件,支持在Linux系统上一键部署整个系统。
- 安装Docker和Docker Compose:
# 安装Docker curl -fsSL https://get.docker.com | sh # 安装Docker Compose sudo curl -L "https://github.com/docker/compose/releases/download/v2.15.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose sudo chmod +x /usr/local/bin/docker-compose
-
克隆代码仓库
git clone https://github.com/LeapYa/Awesome-lianjia-data-analysis-system.git cd Awesome-lianjia-data-analysis-system -
直接启动服务(无需额外配置)
# 构建并启动所有服务 docker-compose up -d # 查看服务状态 docker-compose ps
-
访问系统
- 前端界面: http://你的IP地址
- API服务: http://localhost:8000
⚠️ 初始登录信息首次部署时的登录凭据:
- 用户名:
admin- 密码:
admin123
💡 开箱即用配置
项目已预配置好
.env文件,包含以下开发环境设置:
- 数据库密码:
leapyaleapya123- JWT密钥:开发环境专用密钥
- 环境模式:
development- 调试模式:已启用
# 查看日志
docker-compose logs -f
# 重启服务
docker-compose restart
# 停止服务
docker-compose down
# 停止并删除数据卷(慎用,会删除数据库数据)
docker-compose down -v- 数据库数据存储在命名卷
postgres_data中 - 日志、截图、验证会话等数据挂载到本地对应目录
可以修改 docker-compose.yml 文件中的环境变量来自定义配置,如数据库密码、端口映射等。
-
用户注册/登录:创建账户或使用现有账户登录系统。
-
创建爬虫任务:
- 选择目标城市
- 设置爬取页数
- 提交爬取任务
-
监控爬虫任务:
- 查看任务进度
- 查看爬取结果统计
-
数据分析:
- 选择分析类型
- 设置分析参数
- 查看分析结果和可视化图表
-
导出数据:
- 导出原始数据或分析结果
- 支持CSV、Excel等格式
爬虫模块负责从链家网站爬取租房数据,主要功能包括:
- 使用Selenium和DrissionPage控制浏览器自动化
- 处理链家网站的验证码和反爬机制
- 提取房源信息并存储到数据库
- 管理爬虫任务和进度
数据处理模块负责清洗和分析爬取的数据,主要功能包括:
- 使用PySpark进行大规模数据处理
- 执行多维度数据分析
- 生成分析结果和统计信息
- 支持数据导出和报表生成
API服务模块提供系统的RESTful接口,主要功能包括:
- 提供爬虫任务管理API
- 提供数据查询和分析API
- 提供用户管理和认证API
- 提供系统设置和配置API
验证码处理模块负责处理链家网站的各类验证码,主要功能包括:
- 识别和处理滑块验证码
- 管理验证session和cookies
- 提供验证状态监控和错误处理
IP管理模块负责维护和轮换代理IP,主要功能包括:
- 管理代理IP池
- 实现多种IP轮换策略
- 测试和监控代理IP状态
- 自动刷新和更新IP
用户认证模块负责用户管理和访问控制,主要功能包括:
- 用户注册和登录
- JWT令牌生成和验证
- 密码加密和安全存储
- 基于角色的访问控制
前端应用提供用户界面和交互功能,主要页面包括:
- 首页:系统概览和快速入口
- 任务管理:创建和监控爬虫任务
- 数据分析:查看和交互式分析数据
- 用户中心:管理用户资料和设置
- 系统设置:配置系统参数和选项
- 智能验证码处理:实现了滑块验证码的自动识别和处理,提高了爬虫的成功率。
- 多策略IP管理:设计了多种IP轮换策略,有效应对网站的IP封禁机制。
- 分布式数据处理:基于PySpark实现分布式数据处理,提高了大规模数据分析的效率。
- 多维度数据分析:提供了丰富的数据分析维度,满足不同用户的分析需求。
- 完整的安全机制:实现了用户认证、数据加密和访问控制,保障系统安全。
欢迎对本项目进行贡献!请遵循以下步骤:
- Fork本仓库
- 创建您的特性分支 (
git checkout -b feature/您的功能名称) - 提交您的更改 (
git commit -m '添加了什么功能') - 推送到分支 (
git push origin feature/您的功能名称) - 打开一个Pull Request
本项目采用Apache License 2.0许可证 - 详情见 LICENSE 文件。
项目维护者 - LeapYa
项目链接: https://github.com/LeapYa/Awesome-lianjia-data-analysis-system