返回知识中心
部署

Indeed 职位数据采集:字段、分页与重复记录

保留职位字段、来源标识与观察时间。比较结构化数据和渲染列表,解释分页重叠,避免把列表缺失误判为职位关闭。

BotBrowser Team

文档中心

想直接进入 部署 文档吗?

这篇文章属于知识中心的指南库。若你要步骤化配置、参考说明和持续更新,请直接进入对应 docs 分区。

采集 Indeed 职位数据,先要确定获授权的来源,解析器或浏览器才能产出有用的就业数据。职位标题、组织、地点、日期与来源身份需要字段合同;变化的结果页也需要区分重复观察和不同职位。同样的证据问题适用于获授权的 LinkedIn 来源,但两个平台的可见页面都不代表通用采集许可。BotBrowser 提供声明的浏览器地区与会话输入;它不会授予平台访问权限、提供职位数据或保证结果顺序稳定。保留来源实际证明的内容,将字段缺失、列表未出现与就业事实分开。

获授权的职位来源产出具有来源范围标识的字段观察。构造分页样本中,插入新记录使一个职位重复。去重保留职位身份与各次观察时间;列表缺失不能证明职位关闭。

摘要

  • 检查平台适用条款与真实获授权来源。页面公开或存在结构化标记,不是通用采集许可。
  • 解析卡片或详情页前,确定每个必需字段、来源与缺失含义。
  • JobPosting 是词汇定义,不能证明 Indeed 或 LinkedIn 在某次响应中提供特定字段或标记。
  • 构造的变化列表中,偏移分页可能重复或漏掉记录。这个例子不能证明两个平台的实际实现。
  • 用来源范围身份去重,保留观察历史;认定职位关闭前,需要单独的生命周期证据。

目录

确定获准访问

当前 Indeed 条款直接涉及自动访问。自动系统条款要求明确书面许可,并包含仅按网站 robots 文件规定范围进行抓取的附条件条款。应读取真实适用范围,不能把它转换成通用数据再利用许可。允许某种抓取,不代表允许其他采集目的、不同接口或账号信息访问。就业数据应用应先确定获准集成、数据源或明确获准的观察,再选择解析器。 Google Maps 地点数据比较采用另一套提供方合同:请求字段、可能变化的地点标识和内容保留限制,与页面界面观察分别解释。 房产公告模型将来源公告与实体房产分开,只比较币种和交易含义一致的要价;卡片缺失不能证明售出。 招聘数据入库模型分别保留原始与规范化字段、来源发布实例和观察结果,避免把重复发布或卡片缺失转成虚构关闭。

LinkedIn 用户协议另行禁止通过软件、脚本等自动方式抓取或复制服务,以及未经授权的自动访问。不能假设其条件与 Indeed 一样,也不能认为公开可读职位能覆盖条款。所需许可不可用时,应使用获准来源或返回限制。这个来源决策不需要登录变通、候选人资料采集器,也不需要在拒绝后尝试改变客户端身份。

RFC 9309明确说明,robots 规则不是访问授权。网站另行订立的合同条款可能引用 robots 条件,Indeed 即如此;这要求阅读真实条款及限制,而不是声称标准赋予权利。将许可依据和目标数据范围分别作为采集计划输入。HTTP 成功不能推导再分发或保留权利。技术可读性与获准用途仍是不同问题。

招聘网站浏览器层讨论负责更广的访问与浏览器边界。字段合同则在来源获准后增加一个更具体的问题:这次获准观察究竟能证明职位的什么?合同应说明应用使用获准数据源、提供的样本,还是另行授权的页面观察。记录选择时,不保留可复用账号状态。来源不能回答必需字段问题时,应返回缺失证据,而不是把浏览器自动化当作替代许可机制。

定义职位字段合同

JobPosting 词汇定义了标题、招聘组织、地点与发布日期等属性。这些定义有助于描述记录,但不保证平台提供每项属性。分别确定必需字段与真实来源。卡片标题、详情页雇主名称与结构化日期,在应用证明属于同一来源职位前,都只是独立观察。不能因为文字看起来合理,就将它们拼在一起。

字段组保留证据解释边界
职位身份来源命名空间与实际可用的职位标识标题不是来源标识,也不是全球岗位键
职责与组织归属明确的标题和招聘组织雇主名称相似不证明同一职位
工作地点观察地点与明确的远程工作含义浏览器地区不是职位地点
发布与有效期来源提供的发布日期与有效期值采集时间不是发布时间或关闭日期
薪酬与类型实际金额、币种、周期和提供的雇佣类型缺薪酬不是零;展示范围不是单一固定金额
观察来源表示类型、观察时间与采集结果刷新失败不是就业事实变化

架构参考将 datePosted 定义为在线信息的发布日期,validThrough 则表示项目何时不再有效。它们必须与采集器观察时间区分。今天首次发现的记录可能早已发布,未提供有效期字段意味着未知。应用不能从最近观察时间或一般职位持续时间预期中,凭空生成截止日期。

地点同样需要谨慎。词汇包含 jobLocation 和 jobLocationType,但浏览器配置地区不能确定两者。保留真实来源声明,包括存在时的明确远程工作标记,不能把地点缺失转成全球可申请。价格监测采用的观察流水线将来源记录与后续分析分开。在这个边界保留字段含义和未知状态,避免薪酬、地点和职位年龄统计悄悄使用虚构默认值。

表中每行都是应用要求,不是当前 Indeed 或 LinkedIn 输出声明。来源缺少必需字段时,根据应用规则保留不完整记录或拒绝。可选信息缺失,不代表职位对所有用途无效。关键是区分来源没有值、读取失败与来源值真实变化。这些结果不应在接受的数据集中都变成同一个空字符串。

区分结构化与渲染观察

Google JobPosting 指南要求发布者将结构化数据放在描述单个职位的具体页面,并与可见职位描述同页。这不能证明每个搜索结果页都有完整 JobPosting 对象。获授权的列表观察可能只有摘要卡片,而获准详情来源有更完整信息。应先确认实际提供的表示,不能从卡片缺字段推断职位本身缺字段。

MDN script type 参考说明,使用适当的非 JavaScript MIME 类型时,HTML 可以包含不执行的数据块。这解释了无需执行也可能存在结构化数据的机制,不能证明某个 Indeed 或 LinkedIn 响应包含这种块,也不能证明完整或最新。获授权保存的响应只能确定该次观察中是否存在表示。没有额外证据时,来源归因必须止于此。

获准样本同时有结构化与渲染内容时,应保留来源类型,而不是默默选择更容易提取的字段。结构化标题与缩短的卡片文字不同,不一定代表另一个职位。渲染薪酬短语可能带有单独金额提取会丢失的上下文。确定哪个值回答字段问题,并保留匹配规则。如果两种表示无法对应到目标职位,应标记未解决,而不是拼接成看似完整记录。

JobPosting 词汇可以指导真实属性的解释,但不是平台专属选择器合同。不能从词汇推断私有接口、隐藏标识或稳定 HTML 结构。修改获授权解析器时,保留最小脱敏样本与解释规则,不收集无关账号或候选人信息。来源格式变化应触发解析器版本与验证决策,而不是造成就业统计中无法解释的变化。

渲染路径用途有限:观察获准问题需要、获准响应又未提供的文字或状态。它不能自动修复不可用字段。如果必需值仍无法归属目标职位,应记录限制。运行浏览器只能证明该次运行观察到的获准界面状态,不能证明全平台覆盖、扩展范围的许可或来源每个字段都正确。

用变化列表样本解释分页重叠

当两次观察之间有序列表变化时,偏移分页可能重叠。这是下面构造样本的性质,不是 Indeed 或 LinkedIn 实测结论。样本假设每页三条,第二次请求前发生插入。字母代表自有测试列表的来源身份,不是真实职位。用途是在选择去重规则前,将页面位置与职位身份分开。

样本步骤当时的有序列表观察页面结果
初次请求A, B, C, D, E, FA, B, C首页观察三个身份
前端插入 XX, A, B, C, D, E, F尚未请求页面原记录位置后移
下一偏移请求X, A, B, C, D, E, FC, D, E偏移前进,C 仍重复

重复的 C 不是新职位,第二次出现也不必作为无用信息丢弃。它是在较晚时间对同一样本身份的另一观察。相反,下一偏移前删除记录,可能使未观察条目被跳过。这解释了为什么请求页面序列完成,不等于稳定快照,不能证明两个平台使用偏移、维持固定顺序或提供快照游标。

分页合同取决于所选来源。Google JobPosting 指南描述单职位发布,不是所有招聘平台的分页合同。如果获准集成有文档导航模型,应使用其真实模型。来源未承诺快照时,应说明采集是跨时间观察序列。增加浏览器重试、固定地区或把显示结果数量当成已核实总体,都不能制造快照保证。

在自有分页测试中,验收应检查保留的身份和时间,而不仅是返回行数。构造插入应产生一个重复身份的两次观察,不能成为两个职位。后续列表缺某条时,应记录该列表未观察到,而不是自动关闭。将样本与预期解释和生产来源证据分开,就能测试规则,同时不对受保护服务作无依据声明,也不采集求职者真实数据。

去重但不合并不同职位

获授权来源提供可用标识时,使用来源范围职位键:来源命名空间加该标识。这是应用身份规则,不承诺每个平台都有该字段。JobPosting 标识定义是通用定义,不能建立全球唯一的雇主岗位身份。保留真实来源与标识语义,不能给标题、组织文字相近的所有记录分配同一个键。

跨平台匹配是单独推断。雇主可能发布相似职责、重复使用标题或在多地招聘。两条相似记录,不能证明同一岗位被分发到两个平台。即使后续分析提出匹配,也应保留各自来源身份。保留匹配证据与不确定性,不能在确定重复含义前删除一个来源。来源记录身份与现实岗位身份回答不同问题。

获准来源没有可靠标识时,归属明确的来源 URL 可以作为候选引用,但仍受真实 URL 语义限制。没有证据证明与身份无关,就不能规范化删除参数或路径部分。两个引用都不能建立稳定键时,使用临时身份并标记不确定性。可变描述文本的哈希可以比较观察,但文字变化不必然产生新岗位,相同文字也不能证明两条记录就是一个职位。

共享观察流水线可以将职位实体和观察历史分开。去重应按所选来源键合并重复出现,同时保留观察时间、表示与采集结果。变化列表样本因此产生一个 C 实体、两次观察。同键的新描述是待检查修订,不自动变成新职位。刷新失败是采集事件,不应把此前接受的描述替换成空记录。

浏览器输入不提供这种身份。BotBrowser 地理设置文档规定配置文件前提、自动代理推导设置,以及需要 ENT Tier1 的手动覆盖。它们用于获授权的地区相关观察,不能确定职位地点、稳定排名或跨会话身份。进行运行观察时,应分别记录预期设置与真实加载证据。字段和分页规则不代表已完成真实平台实验。

区分列表消失与职位关闭

结果页缺某职位,可能是列表变化、未到达相关页、响应不完整,或来源未返回该职位。列表缺失本身不能确定解释。Indeed 条款明确保留从搜索结果排除或删除职位广告的权利,因此列表收录不是生命周期保证。Google JobPosting 指南给发布者多个过期处理选项:过去的 validThrough、以不可用状态移除页面,或移除结构化数据。这些是发布者选项,不能证明各平台立即或一致执行。

保留生命周期证据及范围。来源明确说申请已关闭,与采集器找不到卡片不同。过去的有效期具有来源定义的含义,传输失败没有同等就业含义。应用需要关闭状态时,先定义可接受证据,缺证据时保留未知。访问拒绝、超时或未完成分页,不能证明岗位已被填补。

漂移处理应区分表示变化、字段变化、列表重复与生命周期证据。修改解析器前,对照字段合同检查获准样本。架构词汇帮助保留发布与有效期含义,观察和处理时间则由采集器定义。重处理历史样本是新处理事件,不是对现有岗位的新观察。保持区分,避免修复解析器后让旧职位看起来像刚采集。

Indeed 条款还声明不保证雇主提交内容的准确性或可用性。来源获授权不等于底层就业事实保证。保留来源,让下游区分来源声明与应用解释。发布证据充分且可比较的观察,或保留具体限制。浏览器配置、渲染成功和页面数完成,都不能取消这些证据要求。

常见问题

JobPosting 能证明平台提供该结构化数据吗?

不能。它定义词汇,只有真实获授权响应能确定某次观察是否存在该表示与字段。

另一页重复出现的职位是新岗位吗?

不能仅按页面位置判断。使用来源范围身份并保留各次时间;跨平台岗位匹配是另一个推断。

列表缺失能立即标记关闭吗?

不能。列表缺失、采集失败与明确生命周期证据是不同结果,需要不同状态。

改变浏览器地区能让职位结果稳定吗?

不能。它改变浏览器输入,不改变来源排序合同或职位身份。地点与生命周期事实需要来源证据。

来源

实践结论

选择获授权的职位来源,定义必需字段,将来源范围职位身份与页面位置、跨平台岗位匹配分开。保留结构化或渲染来源、观察时间与未知值。BotBrowser 提供声明的浏览器输入,职位事实与访问范围则必须由来源确定。重叠应记录为重复观察,认定列表消失代表关闭前,需要生命周期证据。

#网页抓取#Browser Automation#隐私

本文属于指南: 浏览器部署与发布:运维决策地图

在 BotBrowser 里跑一遍同样的检查

加载 profile,让刚读到的这些信号在浏览器内部保持一致,并在正式上线前先在自己的机器上确认结果。