多源数据采集:集成 Remotive 公开 API 和 Hacker News 招聘帖两个数据源,异步并发抓取,单源失败不影响其他源
数据标准化:将不同格式的招聘信息统一映射为标准结构,支持职位标题、公司、地点、薪资、标签等字段
智能去重:基于数据源+ID 主键去重,重复抓取自动更新而非重复插入
数据导出:一键导出 CSV/JSON 格式,支持 Excel 直接打开(UTF-8-SIG 编码)
数据分析报告:自动生成薪资分布(分桶统计)、技能词频、地区/公司 Top-N 排名等分析报告
定时任务:支持 cron 表达式配置,定时自动抓取(默认每天 09:00)
整体架构和设计思路: 采用分层架构,分为 HTTP 层、爬虫层、存储层、分析层、CLI 层。通过 BaseScraper 抽象基类统一爬虫接口,新增数据源只需继承并注册,无需改动主流程。使用注册表模式管理多个爬虫实例,配置驱动启用/禁用。
负责模块和结果:
异步 HTTP 客户端:封装 aiohttp,实现 UA 轮换、请求节流、指数退避重试、信号量限流,保证并发性能同时避免触发反爬机制
爬虫框架:设计 BaseScraper + JobItem 数据模型,实现 Remotive API 和 Hacker News 两个数据源解析器,单条记录解析失败自动跳过不影响整批
数据存储:SQLite 单表设计,UPSERT 语义去重,索引覆盖常用查询字段(公司/地区/薪资/时间)
CLI 工具:基于 click 实现 run/export/analyze/stats/schedule 五个子命令,支持参数化配置