实战项目 · 已通过自测
实战项目:多 API 数据采集器
并发采集 OpenAlex、Crossref 和 GitHub 分页数据,统一字段、记录失败并增量汇总为 CSV。
一条可靠的数据采集 Flow
这个项目使用 HHY v1.1.0 同时采集 OpenAlex 学术成果、Crossref 论文元数据和 GitHub 仓库。每个来源请求 2 页,HTTP 下载由 parallel(3) 有界并发完成,异构 JSON 随后统一成 source、external_id、title、url、record_type、metric_name 和 metric_value。
| 能力 | 实现 |
|---|---|
| 分页与并发 | 6 个任务 + parallel(3) |
| 网络容错 | 250ms 限速 + 10s timeout + 2 次 retry + attempt |
| 数据治理 | 字段统一 + source/external_id 去重 + 稳定排序 |
| 增量保存 | 读取已有 CSV,新记录覆盖同键旧记录,atomic save |
| 故障审计 | 失败来源、页码和错误写入 failures.json |
项目结构

| 文件 | 职责 |
|---|---|
| collector.hhy | 组合采集、统计和原子输出 |
| lib/jobs.hhy | 生成 OpenAlex、Crossref、GitHub 分页任务 |
| lib/sources.hhy | 限速、超时、重试、并发下载和字段统一 |
| lib/merge.hhy | 读取旧 CSV、去重、排序和增量覆盖 |
运行与增量结果
./build/hhy run practical-projects/multi-api-data-collector/collector.hhy \
practical-projects/multi-api-data-collector/config/public-apis.json \
practical-projects/multi-api-data-collector/output/records.csv \
practical-projects/multi-api-data-collector/output/report.json \
practical-projects/multi-api-data-collector/output/failures.json
验证
sh practical-projects/multi-api-data-collector/self-test.sh测试连续运行两次,验证分页、并发、字段统一、跨页去重、稳定排序、失败列表和增量覆盖。并发用于等待 HTTP,而不是把数值计算伪装成 HHY 的优势。
