---
name: 开源情报-公开源实体采集
description: |
  开源情报目标采集器 - 从公开源采集实体数据（人物、组织、军事装备等）
  
  触发条件：
  - 用户要求采集某个实体类型的数据（军事人物、企业、组织等）
  - 需要从Wikipedia、官方网站等公开源采集结构化数据
  - 需要数据可溯源、合规、有质量保证
  
  功能：
  - 采集：支持Wikipedia、官方网站、社交媒体等公开源
  - 解析：自动提取学历、职务、军衔、出生信息等字段
  - 清洗：清理干扰信息、标准化数据、去重
  - 输出：JSON/CSV格式，附带数据护照
---

# 开源情报目标采集器

## 快速开始

```python
from collector import create_collector
from parser import WikipediaParser, parse_target
from cleaner import DataCleaner

# 1. 创建采集器
config = {
    'target_type': 'military_personnel',
    'language': 'en',  # en/zh/ja
    'delay_min': 8,
    'delay_max': 12,
    'output_dir': './data'
}
collector = create_collector(**config)

# 2. 定义目标列表
targets = [
    {'name': 'Dan_Caine', 'lang': 'en'},
    {'name': 'Christopher_Mahoney', 'lang': 'en'},
    # ...
]

# 3. 运行采集
collector.run(targets, processor_func=parse_target)
```

## 采集方法论

### 数据来源优先级

| 优先级 | 来源 | 说明 |
|--------|------|------|
| 1 | 官方网站 | defense.gov, mod.go.jp 等 |
| 2 | Wikipedia | 多语言版本 |
| 3 | 官方社交媒体 | 推特、Facebook等 |
| 4 | 新闻报道 | 权威媒体 |

### 采集流程

1. **目标识别**：从输入文件/列表获取待采集目标
2. **URL解析**：构建目标源URL（Wikipedia/官网）
3. **数据采集**：使用Crawl4AI获取页面内容
4. **结构化解析**：提取关键字段（学历、职务、军衔等）
5. **图片采集**：自动识别并下载头像/图片
6. **数据清洗**：清理噪声、标准化、验证
7. **质量评估**：生成完整度评分
8. **输出保存**：JSON/CSV + 数据护照 + 图片文件

### 合规原则

- ✅ 仅采集公开可访问信息
- ✅ 遵守目标站点robots.txt
- ✅ 随机延迟避免封禁
- ✅ 记录数据来源和采集时间
- ❌ 不采集私人信息
- ❌ 不采集需要登录的内容

## 脚本说明

### scripts/image_collector.py - 图片/头像采集

```python
from image_collector import ImageCollector, ImageConfig, collect_target_image, collect_batch

# 创建图片采集器
config = ImageConfig(
    output_dir='./images',      # 输出目录
    max_size_mb=5,              # 最大文件大小
    delay_min=3,                # 最小延迟(秒)
    delay_max=6,                # 最大延迟(秒)
    save_thumbnails=True,       # 保存缩略图
    thumbnail_size=(200, 200)   # 缩略图尺寸
)
collector = ImageCollector(config)

# 采集单目标图片
target = {
    'name': 'Dan Caine',
    'url': 'https://en.wikipedia.org/wiki/Dan_Caine'
}
result = collect_target_image(target, config)

# 批量采集
targets = [
    {'name': 'Dan Caine', 'url': 'https://en.wikipedia.org/wiki/Dan_Caine'},
    {'name': 'Christopher Mahoney', 'url': 'https://en.wikipedia.org/wiki/Christopher_Mahoney'},
]
results = collect_batch(targets, config)
```

**输出字段：**
- `filename`: 图片文件名
- `filepath`: 本地保存路径
- `thumbnail_path`: 缩略图路径
- `width`/`height`: 图片尺寸
- `file_size_kb`: 文件大小(KB)
- `image_url`: 原始图片来源URL
- `data_passport`: 数据护照

### scripts/collector.py - 采集核心

```python
from collector import create_collector, OSINTCollector

# 创建采集器
collector = create_collector(
    target_type='military_personnel',
    language='en',
    delay_min=8,
    delay_max=12,
    save_interval=10,
    resume=True,
    output_dir='./data'
)
```

### scripts/parser.py - 内容解析

```python
from parser import WikipediaParser, ParseConfig, parse_target

# 解析配置
config = ParseConfig(
    extract_education=True,    # 学历
    extract_career=True,       # 职业履历
    extract_awards=True,       # 勋章
    extract_social=True,       # 社交媒体
    language='en'
)

# 解析目标
result = parse_target(target_name, fetch_result, config)
```

### scripts/cleaner.py - 数据清洗

```python
from cleaner import DataCleaner, CleaningConfig, clean_records

# 清洗配置
config = CleaningConfig(
    remove_html_tags=True,
    remove_wiki_noise=True,
    standardize_date=True,
    language='en'
)

# 批量清洗
cleaned = clean_records(records, config)
```

### scripts/workflow.py - 完整工作流

```bash
# 命令行运行
python scripts/workflow.py \
    --target-type military_personnel \
    --input targets.json \
    --output result.json \
    --language en \
    --delay-min 8 \
    --delay-max 12
```

## 数据护照

每条记录附带数据护照，确保可溯源：

```json
{
  "name": "Dan Caine",
  "data_source": "https://en.wikipedia.org/wiki/Dan_Caine",
  "collection_time": "2026-04-14T21:36:12",
  "data_passport": {
    "source": "Wikipedia",
    "source_url": "https://en.wikipedia.org/wiki/Dan_Caine",
    "collection_time": "2026-04-14T21:36:12",
    "compliance_note": "数据来源于公开网络资源",
    "data_quality": "B"
  }
}
```

## 支持的目标类型

- **军事人物**：military_personnel
- **政治人物**：political_personnel
- **企业实体**：companies
- **组织机构**：organizations
- **军事装备**：military_equipment

## 扩展新目标类型

1. 在targets中定义新的目标列表
2. 调整language参数（en/zh/ja）
3. 自定义parser解析规则
4. 运行采集工作流

## 注意事项

- 随机延迟8-12秒，防止被封禁
- 自动保存检查点，支持续传
- 定期输出进度日志
- 异常跳过，不中断任务