项目名称:生产级高性能 URL 元数据爬虫系统(C++17 / libcurl)
独立开发了一套面向大规模 URL 列表的元数据采集与提取系统,支持断点续传、并发控制及多源元数据智能提取。系统采用 C++17 编写,仅依赖 libcurl,可在 Linux 服务器及 Windows 环境中直接编译运行。
个人职责与核心技术:
· 设计固定大小工作线程池与 per-host 限速器,通过 libcurl 复用 easy handle 实现高并发抓取,避免目标站点过载,同时平衡吞吐量与礼貌性。
· 从零实现轻量级 HTML 扫描器和 JSON 解析器(支持 {}、[] 嵌套与 Unicode 转义),替代第三方解析库,直接从原始页面中提取 <title>、<meta>、<link>、JSON‑LD、h1 及段落文本,并按照 OG、Twitter 卡片等优先级策略选取最佳元数据,搭配多种 fallback 保证信息完整度。
· 实现完善的错误处理与智能重试:对 429/5xx 采用指数退避重试;当响应体因 --max-bytes 截断导致元数据不完整时,自动发起更大字节的二次请求以获取完整元数据;候选 URL(http/https 自动补全)失败时依次尝试。
· 设计行级事务检查点机制:每行写入前通过 JSON 检查点记录预写信息(包含行文本 SHA‑256),写入成功后再更新已完成行范围,支持精确续抓,意外中断后既能保证数据不丢失,又避免重复行,输出 TSV 与检查点严格一致。
· 内置字符编码处理(UTF‑8、ISO‑8859‑1、Windows‑1252)及 HTML 实体递归解码,确保输出字段干净、无控制字符;支持追踪参数(utm_*、fbclid 等)清除,输出规范化的 canonical URL。
· 使用原子文件写入(临时文件 + rename)和目录 fsync 保证检查点与输出文件的崩溃安全性,同时提供 --no-fsync 模式供追求极致吞吐的场景选用。
项目成果:
在Windows 环境下,以 64 并发可达每分钟数千 URL 的抓取速度,成功稳定处理百万级 URL 数据集。完善的断点续传和自愈逻辑使任务可随时中断恢复,避免了重复抓取和人工干预。系统已作为核心采集工具,服务于互联网档案分析与 SEO 元数据评估项目,因其极低的依赖和鲁棒性获得团队认可