重要提示:每次对文件进行重要补充或修改时,都同时修改完善 progress.md。
- LinkedIn列表页和详情页抓取
- 数据导出到Excel
- 14个字段完整提取
- 职位基本信息、工作描述、专业要求智能提取
- 薪资信息提取和解析(支持年薪/月薪/时薪转换)
- 公司规模提取(多层级搜索策略,带缓存)
- ZenRows API集成
- 请求重试机制和延迟控制
- 错误处理和日志
- Checkpoint管理器实现
- 阶段1(列表页)和阶段2(详情页)断点续传
- 数据文件分离存储(进度与数据分离)
- 自动跳过已处理的职位
- 实时去重机制(在抓取过程中实时去重,基于职位名称+公司名称)
- 跨地点去重逻辑
- 公司规模缓存机制
- 多阶段数据保存(原始数据、去重数据、详情数据)
- 支持491个地点配置(按州/国家-城市顺序组织)
- 美国:395个地点(覆盖所有50个州+DC,包括主要科技城市)
- 国际:96个地点(英国40个、加拿大55个、新加坡1个、香港1个)
- 跨地点去重逻辑
- Checkpoint支持多地点恢复
- 合并关键词搜索:使用OR逻辑合并所有关键词,减少重复API调用
- 智能停止机制:连续2页新增0条时自动结束该地点搜索
- 实时去重,减少存储空间约94%
- 扩展LOCATIONS列表到491个地点
- 美国:395个地点(覆盖所有50个州+DC,包括主要科技城市和扩展城市)
- 国际:96个地点(英国40个、加拿大55个、新加坡1个、香港1个)
- 优化配置参数(MAX_PAGES, LIST_LIMIT, DETAIL_LIMIT)
- .env文件支持,API密钥安全管理
- 延迟API key验证(允许其他脚本导入config.py)
- 单表设计,使用唯一约束去重
- 批量UPSERT、错误处理
- 可选集成(不影响现有Excel导出功能)
- LinkedIn对未登录用户/代理访问有严格限制
- 每个关键词可能只返回10-50条结果
- 解决方案:多地点搜索、合并关键词搜索
- 跨地点搜索时重复率极高(约94%)
- 解决方案:实时去重机制
- 问题:多个关键词轮流搜索造成大量重复API调用
- 解决方案:合并关键词搜索(使用OR逻辑),将5个关键词合并为1个搜索
- 效果:API调用减少80%(从5×139=695次减少到139次,扩展到491个地点后为491次)
- 创建独立的抓取程序(main_ai_related.py)
- 创建职位分类模块(job_classifier.py)
- 创建合并和分类程序(merge_and_classify.py)
- 创建新增职位详情抓取程序(enrich_new_jobs.py)
- 创建最终合并和补全程序(merge_and_enrich_final.py)
- 支持与BunchTest017数据合并去重
- 一次运行完成核心岗位和弱相关岗位的抓取
- 自动合并数据并添加relevance level标记(1=强相关,2=弱相关)
- 自动添加职位标签和岗位级别字段
- 支持独立的checkpoint管理(core和ai_related分别管理)
- 当RUN_ID变化时自动清空旧的checkpoint
- 输出格式严格按照merged_report_2.xlsx格式
- 每100条职位报告一次进度(显示百分比)
- 每次请求失败在PowerShell中实时报告
- 连续3次失败后显示警告提示
- 抓取完成后显示总结信息
- 美国扩展:从139个地点扩展到395个地点
- 新增29个州(覆盖所有50个州+DC)
- 扩展现有州的主要城市(特别是科技中心)
- 覆盖所有主要科技城市和就业中心
- 国际扩展:新增96个国际地点
- 英国:40个地点(覆盖英格兰、苏格兰、威尔士、北爱尔兰主要城市)
- 加拿大:55个地点(覆盖所有主要省份和城市)
- 新加坡:1个地点
- 香港:1个地点
- 总计:491个地点(美国395个 + 国际96个)
- 去重检查:所有地点已检查,无重复,格式统一
- Indeed爬虫集成到主程序
- Indeed checkpoint支持
- LinkedIn和Indeed统一去重
- 同时抓取LinkedIn和Indeed
- 跨平台去重
- 统一数据格式
- 定时任务支持
- 并发抓取优化
- 数据统计分析
main.py- 主程序(支持checkpoint,抓取核心AI岗位)main_ai_related.py- AI弱相关岗位抓取程序(独立运行)main_merged.py- 合并抓取程序(一次运行完成核心+弱相关岗位抓取,自动合并输出)scraper_linkedin_checkpoint.py- LinkedIn爬虫(支持checkpoint和合并关键词搜索,详情页进度汇报)scraper_indeed.py- Indeed爬虫(原始版本)checkpoint_manager.py- Checkpoint管理器exporter.py- Excel导出模块config.py- 配置文件(支持合并关键词搜索配置)locations_config.py- 地点配置文件(491个地点,覆盖美国全境和国际主要城市)job_classifier.py- 职位分类模块merge_and_classify.py- 合并和分类程序merge_and_enrich_final.py- 最终合并和补全程序
README.md- 项目说明progress.md- 本文档(项目进度总结)
- Python 3
- requests - HTTP请求
- BeautifulSoup4 - HTML解析
- pandas - 数据处理
- openpyxl - Excel导出
- ZenRows API - 反爬虫代理
- python-dotenv - 环境变量管理
-
LinkedIn结果限制
- 每个关键词可能只返回10-50条结果
- 通过代理访问时限制更严格
- 解决方案:多地点搜索、合并关键词搜索
-
API配额
- ZenRows API有请求限制
- 需要合理设置请求延迟
-
数据完整性
- 某些字段可能无法从所有职位中提取(如薪资、公司规模)
- 这是正常的,取决于职位页面信息完整性