feat(job_crawler): initialize job crawler service with kafka integration
- Add technical documentation (技术方案.md) with system architecture and design details - Create FastAPI application structure with modular organization (api, core, models, services, utils) - Implement job data crawler service with incremental collection from third-party API - Add Kafka service integration with Docker Compose configuration for message queue - Create data models for job listings, progress tracking, and API responses - Implement REST API endpoints for data consumption (/consume, /status) and task management - Add progress persistence layer using SQLite for tracking collection offsets - Implement date filtering logic to extract data published within 7 days - Create API client service for third-party data source integration - Add configuration management with environment-based settings - Include Docker support with Dockerfile and docker-compose.yml for containerized deployment - Add logging configuration and utility functions for date parsing - Include requirements.txt with all Python dependencies and README documentation
This commit is contained in:
135
job_crawler/README.md
Normal file
135
job_crawler/README.md
Normal file
@@ -0,0 +1,135 @@
|
||||
# 招聘数据增量采集服务
|
||||
|
||||
从八爪鱼API采集招聘数据,筛选近7天发布的数据,通过内置Kafka服务提供消息队列供外部消费。
|
||||
|
||||
## 项目结构
|
||||
|
||||
```
|
||||
job_crawler/
|
||||
├── app/ # 应用代码
|
||||
│ ├── api/ # API路由
|
||||
│ ├── core/ # 核心配置
|
||||
│ ├── models/ # 数据模型
|
||||
│ ├── services/ # 业务服务
|
||||
│ ├── utils/ # 工具函数
|
||||
│ └── main.py
|
||||
├── config/ # 配置文件目录(挂载)
|
||||
│ ├── config.yml # 配置文件
|
||||
│ └── config.yml.docker # Docker配置模板
|
||||
├── docker-compose.yml
|
||||
├── Dockerfile
|
||||
└── requirements.txt
|
||||
```
|
||||
|
||||
## 快速开始
|
||||
|
||||
### 1. 配置
|
||||
|
||||
```bash
|
||||
cd job_crawler
|
||||
|
||||
# 复制配置模板
|
||||
cp config/config.yml.docker config/config.yml
|
||||
|
||||
# 编辑配置文件,填入账号密码
|
||||
vim config/config.yml
|
||||
```
|
||||
|
||||
### 2. 启动服务
|
||||
|
||||
```bash
|
||||
# 启动所有服务
|
||||
docker-compose up -d
|
||||
|
||||
# 查看日志
|
||||
docker-compose logs -f app
|
||||
```
|
||||
|
||||
### 3. 单独构建镜像
|
||||
|
||||
```bash
|
||||
# 构建镜像
|
||||
docker build -t job-crawler:latest .
|
||||
|
||||
# 运行(挂载配置文件)
|
||||
docker run -d \
|
||||
--name job-crawler \
|
||||
-p 8000:8000 \
|
||||
-v $(pwd)/config:/app/config:ro \
|
||||
-v job_data:/app/data \
|
||||
job-crawler:latest
|
||||
```
|
||||
|
||||
## 配置文件说明
|
||||
|
||||
`config/config.yml`:
|
||||
|
||||
```yaml
|
||||
app:
|
||||
name: job-crawler
|
||||
debug: false
|
||||
|
||||
api:
|
||||
base_url: https://openapi.bazhuayu.com
|
||||
username: "your_username"
|
||||
password: "your_password"
|
||||
batch_size: 100
|
||||
# 多任务配置
|
||||
tasks:
|
||||
- id: "task-id-1"
|
||||
name: "青岛招聘数据"
|
||||
enabled: true
|
||||
- id: "task-id-2"
|
||||
name: "上海招聘数据"
|
||||
enabled: true
|
||||
- id: "task-id-3"
|
||||
name: "北京招聘数据"
|
||||
enabled: false # 禁用
|
||||
|
||||
kafka:
|
||||
bootstrap_servers: kafka:29092
|
||||
topic: job_data
|
||||
|
||||
crawler:
|
||||
filter_days: 7
|
||||
max_workers: 5 # 最大并行任务数
|
||||
|
||||
database:
|
||||
path: /app/data/crawl_progress.db
|
||||
```
|
||||
|
||||
## API接口
|
||||
|
||||
| 接口 | 方法 | 说明 |
|
||||
|------|------|------|
|
||||
| `/tasks` | GET | 获取所有任务列表 |
|
||||
| `/status` | GET | 查看采集状态(支持task_id参数) |
|
||||
| `/crawl/start` | POST | 启动采集(支持task_id参数) |
|
||||
| `/crawl/stop` | POST | 停止采集(支持task_id参数) |
|
||||
| `/consume` | GET | 消费数据 |
|
||||
| `/health` | GET | 健康检查 |
|
||||
|
||||
### 使用示例
|
||||
|
||||
```bash
|
||||
# 查看所有任务
|
||||
curl http://localhost:8000/tasks
|
||||
|
||||
# 查看所有任务状态
|
||||
curl http://localhost:8000/status
|
||||
|
||||
# 查看单个任务状态
|
||||
curl "http://localhost:8000/status?task_id=xxx"
|
||||
|
||||
# 启动所有任务
|
||||
curl -X POST http://localhost:8000/crawl/start
|
||||
|
||||
# 启动单个任务
|
||||
curl -X POST "http://localhost:8000/crawl/start?task_id=xxx"
|
||||
|
||||
# 停止所有任务
|
||||
curl -X POST http://localhost:8000/crawl/stop
|
||||
|
||||
# 消费数据
|
||||
curl "http://localhost:8000/consume?batch_size=10"
|
||||
```
|
||||
Reference in New Issue
Block a user