# JobCrawer **Repository Path**: StarsPython/job-crawer ## Basic Information - **Project Name**: JobCrawer - **Description**: 从多个招聘平台抓取文本数据,并进行双AI智能编码,对编码结果进行信效度检验和编码结果统计分析,生成图表和汇总报告 - **Primary Language**: Python - **License**: MIT-0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-11-04 - **Last Updated**: 2025-11-12 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # JobCrawer - 招聘文本数据智能处理系统 ## 📋 项目概述 JobCrawer 是一个专业的招聘文本数据智能处理系统,专门用于从主流招聘平台(BOSS直聘、前程无忧、猎聘)采集招聘信息,并进行深度智能分析和可视化展示。 **核心价值**:帮助用户快速了解招聘市场的趋势、企业雇主品牌特征、岗位需求分布等信息,为人力资源分析、市场研究、学术研究提供数据支持。 ## 🎯 主要功能 ### 🔍 数据采集功能 - **多平台支持**:BOSS直聘、前程无忧、猎聘三大主流招聘平台 - **智能反爬机制**:自动处理平台反爬限制,确保数据采集稳定性 - **批量采集**:支持按关键词、城市、页数进行批量数据采集 ### 🧠 智能编码分析 - **23个分析维度**:涵盖时间分布、雇主品牌价值主张、传播符号、目标受众等 - **混合编码技术**:结合规则匹配和AI智能分析,确保编码准确性 - **信度检验**:提供编码结果的可靠性分析报告 ### 📊 可视化展示 - **词云生成**:自动生成PNG和HTML格式的词云图表 - **统计分析**:生成编码分布饼图、统计表格等可视化报告 - **多格式输出**:支持TXT、JSON、CSV、Excel等多种输出格式 ### 📈 数据分析报告 - **编码分布分析**:各维度的频次分布统计 - **信度分析报告**:编码结果的可靠性评估 - **汇总报告**:整体处理结果的综合报告 ## 🏗️ 系统架构 ### 版本说明 #### V2版本 - 招聘信息AI混合编码系统 - **定位**:专注于招聘文本的智能编码分析 - **核心功能**:规则编码 + AI编码的混合模式 - **适用场景**:需要深度文本编码分析的场景 #### V3版本 - 完整的数据处理系统 - **定位**:完整的招聘文本数据采集、编码、可视化全流程 - **核心功能**:数据采集 → 智能编码 → 词云生成 → 统计分析 - **适用场景**:需要完整数据处理流程的场景 ### 核心模块架构 JobCrawer项目采用**模块化分层架构**,支持从招聘数据采集到智能编码分析的全流程处理。系统包含**V2版本(爬虫系统)**和**V3版本(完整数据处理系统)**两个主要版本,满足不同场景需求。 #### 项目整体架构 ``` JobCrawer/ ├── main.py # 主程序入口(V2版本) ├── V2/ # V2版本系统 - 招聘数据采集系统 │ ├── job_encoding_system/ # 智能编码系统核心 │ │ ├── ai_client.py # AI客户端(DeepSeek API集成) │ │ ├── hybrid_encoder.py # 混合编码器(关键词+AI推理) │ │ ├── data_processor.py # 数据预处理模块 │ │ ├── encoding_rule_parser.py # 编码规则解析器 │ │ └── output_generator.py # 输出生成器 │ ├── 51jobs_crawer/ # 前程无忧爬虫系统 │ │ ├── 51job_crawler.py # 主爬虫程序 │ │ ├── parser_51job.py # HTML解析器 │ │ ├── fetch.py # 数据获取模块 │ │ └── saver.py # 数据保存模块 │ ├── boss_crawer/ # BOSS直聘爬虫系统 │ │ ├── boss_crawler.py # 主爬虫程序 │ │ ├── parser_boss.py # HTML解析器 │ │ ├── playwright_fetch.py # Playwright数据获取 │ │ └── saver.py # 数据保存模块 │ ├── liepin_crawer/ # 猎聘爬虫系统 │ │ ├── liepin_crawler.py # 主爬虫程序 │ │ ├── parser_liepin.py # HTML解析器 │ │ ├── browser_fetch.py # 浏览器数据获取 │ │ └── saver.py # 数据保存模块 │ ├── data/ # 爬虫数据存储 │ │ ├── BOSS*.txt # BOSS直聘数据文件 │ │ ├── 前程无忧*.txt # 前程无忧数据文件 │ │ └── 猎聘*.txt # 猎聘数据文件 │ └── docs/ # 技术文档 │ ├── DESIGN_*.md # 各平台爬虫设计文档 │ └── 雇主类目编码表.txt # 编码维度定义 ├── V3/ # V3版本系统 - 完整数据处理系统 │ ├── main.py # V3主程序入口 │ ├── src/ # 源代码目录(模块化架构) │ │ ├── config.py # 配置管理模块 │ │ ├── data/ # 数据加载模块 │ │ │ └── loader.py # 数据加载器 │ │ ├── encoding/ # 智能编码模块 │ │ │ ├── encoder.py # 智能编码器核心 │ │ │ ├── reliability_calculator.py # 信度系数计算 │ │ │ └── url_fetcher.py # URL获取器 │ │ ├── services/ # 业务服务层 │ │ │ └── main_service.py # 主服务逻辑 │ │ ├── stats/ # 统计分析模块 │ │ │ └── encoding_distribution_analyzer.py # 编码分布分析 │ │ ├── utils/ # 工具模块 │ │ │ ├── cache.py # 缓存管理 │ │ │ ├── exceptions.py # 异常处理 │ │ │ └── logger.py # 日志管理 │ │ └── visualization/ # 可视化模块 │ │ └── wordcloud.py # 词云生成器 │ ├── data/ # 数据目录(结构化存储) │ │ ├── input/ # 输入数据目录 │ │ ├── output/ # 输出结果目录 │ │ ├── cache/ # 缓存数据目录 │ │ └── pictures/ # 图片资源目录 │ ├── docs/ # 详细技术文档 │ │ ├── 四个信度系数的计算方法.md # 信度检验方法 │ │ ├── 编码维度核对报告.md # 编码体系说明 │ │ └── 招聘文本数据智能编码与词云生成系统设计文档.md # 系统设计 │ ├── fonts/ # 字体资源目录 │ │ ├── msyh.ttc # 微软雅黑字体 │ │ └── msyhbd.ttc # 微软雅黑粗体 │ ├── logs/ # 日志文件目录 │ │ └── JobCrawerSystem_*.log # 系统运行日志 │ └── tests/ # 测试目录 ├── docs/ # 项目文档目录 ├── output/ # 全局输出目录 ├── pyproject.toml # 项目配置(UV包管理) └── uv.lock # 依赖锁定文件 ``` #### 版本特性对比 | 特性 | V2版本(爬虫系统) | V3版本(完整系统) | |------|-------------------|-------------------| | **核心功能** | 招聘数据采集 | 数据采集+智能编码+可视化 | | **架构设计** | 平台专用爬虫 | 模块化分层架构 | | **数据处理** | 基础文本提取 | 23维度智能编码 | | **输出格式** | 文本文件 | 词云+统计分析+可视化 | | **适用场景** | 数据采集需求 | 完整数据分析流程 | #### 技术架构特点 1. **模块化设计**:每个功能模块独立封装,便于维护和扩展 2. **分层架构**:数据层→业务层→服务层→展示层清晰分离 3. **配置驱动**:通过环境变量和配置文件灵活调整系统行为 4. **缓存机制**:智能缓存减少API调用,提升处理效率 5. **错误处理**:完善的异常处理和日志记录机制 6. **测试覆盖**:单元测试和集成测试确保代码质量 ## 🚀 快速开始 ### 环境要求 - Python 3.8+ - UV包管理器(推荐) - 有效的DeepSeek API密钥 ### 安装步骤 1. **克隆项目** ```bash git clone <项目地址> cd JobCrawer ``` 2. **安装依赖** ```bash # 使用uv同步依赖(推荐) uv sync # 或者手动添加依赖 uv add beautifulsoup4 deepseek-sdk jieba lxml matplotlib openpyxl pandas pillow playwright pyecharts python-dotenv requests selenium wordcloud ``` 3. **配置环境变量** ```bash # 复制环境变量模板 cp .env.example .env # 编辑.env文件,设置DeepSeek API密钥 # DeepSeek API配置 DEEPSEEK_API_KEY=your_api_key_here DEEPSEEK_API_URL=https://api.deepseek.com/v1/chat/completions DEEPSEEK_MODEL=deepseek-chat ``` 4. **验证安装** ```bash uv run python V3/main.py --help ``` **注意**:请确保设置有效的DeepSeek API密钥。 ## 📖 使用教程 ### 基本使用流程 #### 1. 数据准备 将招聘文本数据(TXT格式)放置在 `V3/data/input/` 目录下 #### 2. 运行处理 ```bash # 处理单个文件 uv run python V3/main.py V3/data/input/前程无忧01.txt # 处理整个目录 uv run python V3/main.py V3/data/input/ # 指定输出格式(PNG和HTML词云) uv run python V3/main.py V3/data/input/ -f png html ``` #### 3. 查看结果 处理完成后,结果将保存在 `V3/data/output/` 目录中 ## 5. 智能编码流程详解 ### 5.1 编码规则与23维度编码体系 #### 5.1.1 编码规则详解 **关键词匹配规则** - **精确匹配优先**:使用预定义关键词库进行精确匹配 - **同义词扩展**:支持同义词和近义词的智能匹配 - **权重分配**:不同关键词具有不同的匹配权重 - **上下文感知**:考虑关键词在文本中的上下文环境 **AI推理规则** - **语义理解**:基于DeepSeek API的深度语义分析 - **模式识别**:识别文本中的模式和规律 - **逻辑推理**:基于业务逻辑进行智能推理 - **置信度评估**:为每个编码决策提供置信度评分 **随机值规则** - **合理性检查**:确保默认值符合业务逻辑 - **上下文适配**:根据文本内容调整随机选项 - **异常处理**:对异常情况提供合理的默认处理 #### 5.1.2 23维度编码体系详解 系统对招聘信息进行**23个维度**的全面编码,每个维度都有明确的编码规则和选项: **基础信息维度(8个)** 1. **平台**:招聘信息来源平台(如:智联招聘、前程无忧等) 2. **发布年份**:招聘信息的发布年份 3. **发布月份**:招聘信息的发布月份 4. **工作类型**:全职、兼职、实习、临时等 5. **公司规模**:微型、小型、中型、大型、超大型 6. **公司性质**:国企、民企、外企、合资、事业单位等 7. **行业类别**:IT互联网、金融、制造业、教育等 8. **工作经验要求**:应届生、1-3年、3-5年、5年以上等 **薪酬福利维度(3个)** 9. **薪酬福利**:基本工资、绩效奖金、年终奖等 10. **补贴福利**:餐补、交通补贴、通讯补贴等 11. **保险**:五险一金、商业保险、补充医疗保险等 **工作条件维度(5个)** 12. **工作地点**:具体工作城市和区域 13. **团队规模**:团队人数规模 14. **工作时间**:标准工时、弹性工作、轮班制等 15. **是否出差**:经常出差、偶尔出差、不出差 16. **是否提供住宿**:提供住宿、不提供住宿 **雇主品牌维度(7个)** 17. **雇主品牌经济价值主张**:薪酬竞争力、晋升机会等 18. **雇主品牌发展价值主张**:培训发展、职业规划等 19. **雇主品牌社会情感价值主张**:企业文化、工作氛围等 20. **传播符号-视觉符号**:企业Logo、品牌色彩等 21. **传播符号-文本符号**:企业口号、品牌故事等 22. **目标受众**:招聘面向的目标人群 23. **招聘策略**:招聘渠道、招聘方式等 #### 5.1.3 编码优先级策略 系统采用**三层编码策略**,确保编码的准确性和效率: **第一层:关键词匹配(优先级最高)** - 使用预定义的关键词库进行精确匹配 - 支持模糊匹配和同义词扩展 - 匹配成功立即返回结果,不再进行后续处理 **第二层:AI智能推理(优先级中等)** - 关键词未命中时调用DeepSeek API - 基于语义理解和模式识别进行智能分类 - 提供置信度评分,用于后续决策 **第三层:默认值随机回退(优先级最低)** - 前两层均未命中时,随机选择类目的选项 - 默认值基于业务逻辑和统计分析确定 - 确保所有维度都有合理的编码结果 #### 5.1.4 编码质量保障 **实时质量监控** - 编码过程实时监控和记录 - 异常编码结果自动标记 - 编码质量阈值控制 **编码一致性检查** - 同一文本的多维度编码一致性验证 - 逻辑关系合理性检查 - 异常值检测和处理 **编码结果验证** - 编码结果完整性检查 - 编码准确性抽样验证 - 编码质量统计分析 ### 5.2 编码流程详细说明 #### 阶段1:数据预处理 - 文本清洗和标准化 - 元数据提取(文件名解析) - 内容合并和格式化 #### 阶段2:多层级编码 1. **关键词匹配层**:使用预定义关键词库进行快速匹配 2. **AI推理层**:调用DeepSeek API进行复杂语义分析 3. **规则补充层**:基于业务规则补充缺失信息 #### 阶段3:结果验证 - 编码结果完整性检查 - 逻辑一致性验证 - 异常值检测和处理 ### 5.3 双AI编码与副本A/B验证流程 #### 5.3.1 双AI编码员架构 系统采用**双AI编码员并行架构**,确保编码结果的客观性和可靠性: **DeepSeek编码员配置** - **API端点**:`https://api.deepseek.com/v1/chat/completions` - **模型版本**:DeepSeek-V3.1-Terminus - **编码策略**:基于语义理解的智能分类 - **优势特点**:强大的自然语言理解能力,擅长复杂语义分析 **KiMi编码员配置** - **API端点**:`https://api.kimi.com/v1/chat/completions` - **模型版本**:KiMi-Large - **编码策略**:基于规则和模式匹配的分类 - **优势特点**:稳定的规则执行能力,擅长结构化信息提取 #### 5.3.2 副本A/B验证机制 **数据隔离设计** - **副本A**:包含75个样本的独立数据集,由DeepSeek编码员处理 - **副本B**:包含相同75个样本的独立数据集,由KiMi编码员处理 - **完全隔离**:两个编码过程在独立环境中运行,避免任何信息泄露 **编码过程控制** - **时间同步**:双编码员同时开始编码任务 - **过程监控**:实时记录每个编码决策的时间戳和推理过程 - **异常检测**:自动识别编码过程中的异常行为 #### 5.3.3 编码一致性保障 **预编码校准** - **规则统一**:双AI编码员使用相同的编码规则手册 - **示例训练**:提供标准化的训练样本进行预编码校准 - **阈值设定**:设定统一的编码质量阈值标准 **实时一致性检查** - **交叉验证**:定期抽取样本进行交叉编码验证 - **分歧处理**:即时识别和处理编码分歧 - **质量反馈**:实时反馈编码质量指标 #### 5.3.4 信效度检验方法 为确保编码结果的可靠性,系统采用**双AI编码员+副本验证**的信效度检验方案: #### 检验设计 - **样本量**:75个招聘文本(基于统计功效分析确定) - **编码员**:DeepSeek AI + KiMi AI(双AI编码员) - **验证方式**:副本A/B独立编码,避免交叉污染 - **目标系数**:所有信度系数 ≥ 0.9(优秀一致性标准) - **检验周期**:5天紧凑实施时间表 #### 四个核心信度系数详解 系统计算以下四个国际通用的信度系数,每个系数都有特定的应用场景和计算逻辑: **1. Cohen's Kappa (κ)** - **公式**:κ = (P₀ - Pₑ) / (1 - Pₑ) - **特点**:考虑偶然一致性的分类一致性度量 - **适用**:二分类或多分类变量的编码一致性检验 - **解释**:κ > 0.9表示几乎完美一致性 **2. Krippendorff's Alpha (α)** - **公式**:α = 1 - (Dₒ / Dₑ) - **特点**:适用于多分类变量,对缺失数据鲁棒 - **适用**:内容分析、文本编码等复杂分类场景 - **解释**:α ≥ 0.8表示可接受的一致性水平 **3. Holsti's CR (一致性比率)** - **公式**:CR = 一致编码数 / 总编码数 - **特点**:简单直观,直接反映编码员一致性 - **适用**:快速评估编码质量 - **解释**:CR ≥ 0.9表示高度一致性 **4. Scott's Pi (π)** - **公式**:π = (P₀ - Pₑ) / (1 - Pₑ),其中Pₑ基于平均边际概率 - **特点**:考虑编码员边际分布的一致性度量 - **适用**:多个编码员间的系统性偏差检测 - **解释**:π > 0.9表示编码员间系统性偏差很小 #### 检验流程详细说明 **阶段1:准备阶段(第1天)** - 随机抽取75个代表性样本 - 制定详细的编码规则手册 - 准备双AI编码员的环境配置 - 创建副本A/B数据集 **阶段2:编码阶段(第2-3天)** - **DeepSeek编码员**:独立编码副本A - **KiMi编码员**:独立编码副本B - 编码过程完全隔离,避免信息泄露 - 实时记录编码决策和推理过程 **阶段3:分析阶段(第4天)** - 收集双编码员的编码结果 - 计算四个信度系数 - 生成详细的信效度检验报告 - 识别低信度类目和编码分歧点 **阶段4:改进阶段(第5天)** - 针对低信度类目优化编码规则 - 重新校准AI编码员的分类逻辑 - 更新关键词库和匹配策略 - 最终验证改进效果 #### 质量保障措施 **实时监控机制** - 编码过程实时一致性检查 - 异常编码结果自动标记 - 编码员决策偏差检测 **反馈校准机制** - 即时反馈编码分歧 - 定期校准编码标准 - 动态调整编码策略 **阈值控制机制** - 设定信度系数质量阈值(≥0.9) - 自动触发重新编码流程 - 质量不合格样本的排除机制 #### 技术实现 系统提供完整的信效度检验工具链: ```python # 批量计算四个信度系数 from V3.src.reliability.reliability_calculator import calculate_all_reliability # 输入:双编码员的编码结果DataFrame # 输出:四个信度系数和详细分析报告 reliability_results = calculate_all_reliability(coder_a_results, coder_b_results) ``` 支持多种输出格式: - CSV格式:便于统计分析 - Excel格式:包含详细的计算过程 - 可视化报告:直观展示信度水平 ### 命令行参数说明 ```bash uv run python V3/main.py <输入路径> [选项] 参数说明: - 输入路径:单个TXT文件路径或包含TXT文件的目录路径 - -f/--formats:输出格式,支持 png, html(默认:png) - -v/--verbose:显示详细日志信息 示例: uv run python V3/main.py V3/data/input/前程无忧01.txt -f png html -v ``` ### V2版本使用(编码专用) ```bash cd V2/job_encoding_system # 处理单个文件 uv run python main.py -f 输入文件.txt -o 输出目录 # 批量处理目录 uv run python main.py -d 输入目录 -o 输出目录 # 指定编码模式 uv run python main.py -f 输入文件.txt -o 输出目录 --mode auto # 自动模式(推荐) ``` ## 📁 交付物说明 ### 输出目录结构 ``` V3/data/output/ ├── TXT/ # 文本格式结果 │ ├── 前程无忧01_result.txt │ ├── BOSS01_result.txt │ └── ... ├── JSON/ # JSON格式结果 │ ├── 前程无忧01_result.json │ ├── BOSS01_result.json │ └── ... ├── analysis/ # 分析报告 │ ├── charts/ # 可视化图表 │ │ ├── 企业文化_饼图.png │ │ ├── 薪酬福利_饼图.png │ │ └── ... │ ├── csv/ # 统计表格 │ │ ├── 企业文化_统计.csv │ │ ├── 薪酬福利_统计.csv │ │ └── ... │ └── encoding_distribution_summary.xlsx # 编码分布汇总 ├── encoding_summary.csv # 编码汇总 ├── reliability_analysis.csv # 信度分析 └── summary_report.json # 汇总报告 ``` ### 结果文件内容示例 **TXT结果文件包含以下分析维度:** 1. **时间分布(情境)** - 发布年份、月份、周数 2. **对象条件(情境)** - 发布平台信息 3. **雇主品牌价值主张** - 经济维度:薪酬福利、补贴福利 - 发展维度:职业培训、晋升通道、项目机会 - 社会情感维度:企业文化、工作环境、员工活动 4. **传播符号** - 视觉:企业标识呈现、场景图像 - 文本:语言风格、荣誉资质 5. **目标受众(情境)** - 校招/社招、岗位类型 6. **招聘策略** - 申请流程、差异化卖点 ## 🔄 运行流程 ### 完整处理流程 ```mermaid graph TD A[数据输入] --> B[平台格式识别] B --> C[智能编码分析] C --> D[词云生成] D --> E[统计分析] E --> F[结果输出] C --> G[编码分布分析] C --> H[信度检验] G --> I[可视化图表] H --> J[可靠性报告] D --> K[PNG词云] D --> L[HTML词云] ``` ### 详细步骤说明 1. **数据加载**:读取输入的TXT文件,识别招聘平台来源 2. **格式解析**:根据不同平台格式解析招聘信息 3. **智能编码**:对23个维度进行智能编码分析 4. **词云生成**:基于编码结果生成可视化词云 5. **统计分析**:计算编码分布和信度指标 6. **结果保存**:输出多种格式的分析结果 ## 📊 运行结果示例 ### 可视化输出 - **词云图表**:直观展示高频词汇分布 - **饼图统计**:各维度的频次分布可视化 - **统计表格**:详细的数值统计报告 ### 数据分析报告 - **编码分布**:各分析维度的出现频率统计 - **信度分析**:编码结果的可靠性评估 - **汇总报告**:整体处理结果的JSON格式汇总 ## ⚙️ 配置说明 ### 环境变量配置 在 `.env` 文件中配置以下参数: ```ini # API配置(用于AI编码功能) API_BASE_URL=您的API基础地址 API_KEY=您的API密钥 # 项目路径配置 PROJECT_ROOT=项目根目录路径 OUTPUT_DIR=输出目录路径 CACHE_DIR=缓存目录路径 # 词云配置 WORDCLOUD_WIDTH=800 WORDCLOUD_HEIGHT=600 WORDCLOUD_BACKGROUND_COLOR=white ``` ### 编码维度配置 系统支持23个预设编码维度,涵盖: - 时间情境分析 - 雇主品牌价值主张 - 传播符号分析 - 目标受众识别 - 招聘策略分析 ## 🛠️ 常见问题 ### Q: 如何处理新的招聘平台数据? A: 系统支持扩展新的平台解析器,只需在 `src/services/` 目录下添加对应的解析模块。 ### Q: 编码结果不准确怎么办? A: 可以调整编码规则或使用AI编码模式,系统支持规则编码和AI编码的混合模式。 ### Q: 如何处理大量数据? A: 系统支持批量处理,可以将多个TXT文件放在同一目录下进行批量处理。 ### Q: 输出文件太多如何管理? A: 系统会自动按平台、格式分类存储,并提供汇总报告便于整体查看。 ## 🔮 未来发展 - [ ] 支持更多招聘平台 - [ ] 增强AI编码准确性 - [ ] 添加实时数据监控 - [ ] 提供Web界面操作 - [ ] 支持自定义分析维度 ## 📞 技术支持 如有问题或建议,请通过以下方式联系: - 项目文档:查看 `docs/` 目录下的详细文档 - 问题反馈:提交Issue到项目仓库 - 技术交流:参与项目讨论 --- **注意**:使用本系统时请遵守相关法律法规,尊重数据来源平台的用户协议。