

# 如何核对初级职位是否要求经验

在相信初级职位标签之前，先读完整的职位描述。把必需经验、优先经验和写明的培训分开。保留来源中的原词。如果用词不清楚，就让该情况保持不清楚。这项检查只读招聘信息。它不判断你本人是否适合该职位。

Actor 是一个托管程序，用来收集数据。Task 是已保存的输入预设。预设是一组有名称的输入，你可以再次使用。这里的 Actor 是 [Indeed Jobs Scraper](https://apify.com/chronometrica/indeed-jobs-scraper)。它从 Indeed 收集招聘信息行。Indeed 是一个公开的招聘网站。每一类经验都由你自己指定。Actor 不指定这些类别。

公开 Task 只是一份起始输入。它并不表示 Actor 会替你判断这些招聘信息。

## 先写下你的规则

在这个 Actor 里，初级职位没有单一规则。你必须在读这些行之前写下规则。纳入规则是决定哪些招聘信息符合你目标的那句话。

本文使用一条纳入规则。描述必须写明不要求先前的相关经验。这里的相关是指同一类工作中的经验。

必需是指招聘信息写明你必须具备该经验。required 和 must 这两个词表示这一点。优先是指招聘信息提出经验要求，但没有写明你必须具备。明确不要求是指招聘信息写明该经验不是必需的。提供培训是指招聘信息写明会提供培训。不清楚是指这些信号缺失。明确是指招聘信息用文字陈述这一点。

“两年经验者优先”与“必须具备两年经验”不是同一种说法。只有一个数字不够。只有职位名称也不够。要读它们旁边的词。

你可以写一条不同的规则。一个例子是明确的带薪培训。如果你选择那条规则，就只按那条规则计数。不要在同一次计数里混用两条规则。后面的虚构计数只使用不要求先前经验这条规则。

搜索标签不是雇主的完整规则。一条招聘信息可以写 junior，同时仍要求专业执照。执照是单独的条件。培训不能取消执照、考试、学位，或招聘信息所要求的另一项证明。

## 收集一份你读得完的样本

当前公开版本是 1.2.14。它接受 searchTerm、country、location、maxItems、maxPagesPerSearch、postedWithinDays、sortBy 和 saveOnlyUniqueItems。不要假定其他输入名称可用。

已保存的[公开 Task](https://apify.com/chronometrica/indeed-jobs-scraper/examples/indeed-jobs-scraper)在 2026-10-13 仍是当前版本。它的输入范围很宽。把它当作起点，不要把它当作你的阅读样本。

```json
{
  "country": "us",
  "searchTerm": "software engineer",
  "maxItems": 100,
  "postedWithinDays": "7",
  "sortBy": "date",
  "maxPagesPerSearch": 2,
  "saveOnlyUniqueItems": true
}
```

收集一份你读得完的样本

在这份已保存的输入里，country `us` 表示美国。searchTerm 是 `software engineer`。maxItems 是 100。maxPagesPerSearch 是 2。postedWithinDays 是文本 `7`，所以该输入要求最近七天。sortBy 是 `date`，所以该输入要求按日期排序。saveOnlyUniqueItems 为 true。

角色是你打算阅读的那一类职位。市场是国家；如果你设置了 location，再加上一个地点。做第一次检查时，设置一个角色和一个市场。把 maxItems 设为 2。把 maxPagesPerSearch 设为 1。用那一个角色替换 `software engineer`。只有在你需要一个地点时才设置 location。

上限是你要求 Actor 最多保存的数量。maxItems 限制行数。maxPagesPerSearch 限制每次搜索的页数。上限为 2 时，你可以读完每一条已保存的描述。它不会告诉你存在多少职位。一次落在七天之内的运行仍可能漏掉招聘信息。一次运行是 Actor 的一次执行。

一次兼容的当前对照使用了较小的上限。它返回了两行。在每一行上，ID 和 URL 都指向同一条招聘信息。收集到的 descriptionText 是完整的描述文本。该运行达到上限后停止。该结果只支持文本收集。它不是下方虚构行的发现。它也不是对该市场的完整覆盖。

保存原始行。保存你实际使用的输入。保存 OUTPUT，以及任何上限或失败备注。OUTPUT 是已保存的结果文件。空结果不能证明没有职位。达到上限也不能证明你看到了每一个职位。

Actor 提供当前的公开文本。它不提供更早的描述。它不提供雇主编辑文本的时间。它不提供申请人状态。它不提供培训计划。它不指定经验类别。

下方的虚构台账不是软件工程师结果。它也不是那次两行对照。已保存的 Task 和这段虚构使用的是不同职位。

## 保留这些字段

字段是一行上的一个命名值。行是一条收集到的招聘信息记录。使用 jobId、title、companyName、locationRaw、descriptionText、descriptionStatus、jobUrl、query、searchLocation 和 scrapedAt。

把 jobId 按文本保留。如果你把它存成数字，电子表格可能会改动它。这个 ID 必须保持为你收集到的同一段文本。

descriptionText 是收集到的描述。descriptionStatus 告诉你该文本是否可用。`full` 表示已收集描述文本。`missing` 表示未收集。不承诺有 snippet 状态。收集到的文本并不保证是雇主的整份文件。

seniority、employmentType、salaryRaw、postedAt 和 postedAtRaw 可以缺失。缺失表示未知。未知不是零。空白的 seniority 字段不是初级职位标签。

title、seniority 和 query 是标签。它们显示名称或本次搜索。它们不能代替 descriptionText。postedAt 是来源给出的发布时间，前提是该字段存在。scrapedAt 是 Actor 收集该行的时间。这两个时间都不能证明雇主后来做过编辑。

在比较各行之前，使用已发布的重复与再次发布指南：[职位重复与再次发布](https://chronometrica.com/zh-Hans/articles/%E5%8E%BB%E9%99%A4%E9%87%8D%E5%A4%8D%E8%81%8C%E4%BD%8D%E5%88%97%E8%A1%A8-%E5%BD%92%E7%BB%84%E5%8F%AF%E8%83%BD%E7%9A%84%E9%87%8D%E6%96%B0%E5%8F%91%E5%B8%83/)。一条再次发布的招聘信息可以看起来像第二个职位。不要把两份副本当成两条不同的雇主规则。Task 中的唯一项设置不能代替那次核对。

## 做这八项检查

1. 在收集之前，用一句话写下纳入规则。对本文而言，规则是不要求先前的相关经验。你也可以记下明确的带薪培训，但不要把那条记录混进同一次计数。先写规则，这样职位名称以后不能改动它。Actor 不会修复招聘网站的搜索。你只能检查你收集到的行。
2. 在判断一行之前，先核对身份和文本。把 jobId 与 jobUrl 对应起来。阅读 descriptionStatus。如果状态为 missing，就把描述标为不可用并停止。把 title 和任何 seniority 值保留为标签。然后阅读 descriptionText 中的要求。一行可以出现在搜索结果里，却仍不符合你的规则。在结果中占有一个位置，并不是雇主作出的承诺。
3. 找出每一句经验表述，以及它旁边的限定词。限定词包括 required、must、preferred、not required 和 training。连同 jobId 和 jobUrl 复制那句原文。指定一个类别：明确必需、明确优先、明确不要求、提供培训，或不清楚。如果培训和经验同时出现，两条都记录。不要把它们合成一个词。只有一个数字时，仍然需要这些限定词。
4. 把学历、证明和同一类工作的条件记在分开的行上。学位、执照、考试或工具技能不是经验类别。不要把一句培训表述变成这些条件已通过。如果一条招聘信息陈述了两条不同的经验规则，保留两句并标出冲突。不要只保留较容易的那一句。这一对额外的句子是本步骤的虚构。它不是下方六行之一。一行写着“不要求经验。”后面一行写着“必须具备三年经验。”这两行互相冲突。结果是冲突，不是通过。
5. 为每一条收集到的招聘信息建立一行台账。台账是你的核对表，记录原词和类别。纳入所声称的标签、经验类别、其他条件、培训表述、文本状态和核对状态。核对状态是你在已写规则下给出的标签。当描述支持该规则时，使用 `supported_label_under_rule`。当标签与描述不一致时，使用 `label_conflict`。当用词不能决定该规则时，使用 `unclear`。这三种状态属于你。它们不是 Actor 字段。
6. 只计数属于该样本、jobId 已知且描述文本完整的行。把不可用的描述单独计数。把未能对应的 ID 单独计数。未能对应的 ID 是你无法把它对应到一条招聘信息上的 ID。不要把缺失的经验行读成零年。这个样本不能告诉你雇主为什么使用某个标签。它也不能告诉你搜索为什么使用某个标签。
7. 做一份较小的阅读清单，供更仔细地阅读。一个优先条件可以留在那份清单上。它不是自动拒绝。一句必需表述是招聘信息中的证据。它不是个人例外。只有雇主能在你申请时接受例外。以后当你把自己的工作经历与一个角色比较时，使用[技能匹配指南](https://chronometrica.com/zh-Hans/articles/%E5%AF%B9%E7%85%A7%E6%8A%80%E8%83%BD%E6%8E%92%E5%BA%8F%E8%81%8C%E4%BD%8D/)。不要添加一个表示你有多容易被雇用的分数。
8. 交付台账时带上每个来源 ID 和 URL。在申请之前，阅读申请页面上的雇主说明。收集到的描述可能与该页面不一致。

## 给六条虚构招聘信息分类

下方六行全部是虚构。它们不是 Actor 的输出。它们不是那次两行对照。这里不声称任何真实雇主的结果。这些 ID 是教学文本。它们没有可打开的 URL。没有提供 companyName 和 locationRaw。让它们保持未知。不要编造它们。

样本规则有两部分。第一，保留初级职位行。高级角色排除在外。第二，在其余完整文本中，应用不要求先前经验的规则。

J1 的职位名称是初级分析师。描述写着：“不要求先前的分析经验；提供培训。”它还要求一次电子表格考试。经验类别是明确不要求，因为招聘信息写明不要求先前的分析经验。这与已写规则相符，所以核对状态是 `supported_label_under_rule`。同一句也提供培训。把提供培训单独记一条。文本没有说培训是带薪的。不要加上“带薪”这个词。电子表格考试仍然是必需的。考试不是经验。符合经验规则并不能取消这次考试。下一步，在依赖培训用词之前，先阅读这次必需考试的要求说明。

J2 的职位名称是入门级分析师。描述写着：“必须具备两年专业分析经验。”职位名称声称这是入门级。该句表示这两年经验是必需的，因为它写明了“必需”。已写规则要的是不要求先前的相关经验。描述与该规则不符。职位名称不能改变描述。核对状态是 `label_conflict`。下一步，把这两年经验保留为明确证据。例外属于雇主，不属于这份台账。

J3 使用这些词：“一年经验者优先；欢迎应届毕业生。”本例没有陈述职位名称。类别是明确优先，因为招聘信息写了“优先”，并且没有写“必需”。规则要求有文字写明不要求先前经验。J3 没有这样写。优先不是必需的门槛。优先也不是“不要求经验”这句话。不要把 J3 计为符合该规则。也不要仅因这一年优先经验就拒绝它。“欢迎应届毕业生”是另一句表述。它不能取消这里没有写下的条件。把 J3 留在阅读清单上。下一步，在做决定之前先读完整描述。

J4 使用这些词：“具备报告相关经验。”没有陈述职位名称。该句没有写 required、must、preferred 或 not required。它也没有提供培训。只有一句经验短语时，没有类别。核对状态是 `unclear`。下一步，不要补上 must，也不要补上零。

J5 是搜索返回的一个高级角色。初级职位样本不包含高级角色。J5 不相关。排除它，并保留排除备注。如果你删掉这条备注，收集到的集合看起来会比实际更小。下一步，不要把 J5 的经验用词放进初级职位计数。

J6 没有完整描述。它的 descriptionStatus 为 missing。你不能给自己没有的词分类。经验需求为未知。未知不是零年，未知也不是通过。下一步，不要把 J6 放入已分类计数。

| 行 | 所声称的标签 | 经验原词 | 经验类别 | 其他条件 | 培训 | 文本状态 | 按已写规则的核对 | 下一步阅读 |
| --- | --- | --- | --- | --- | --- | --- | --- | --- |
| J1 | 初级分析师 | 不要求先前的分析经验 | 明确不要求 | 要求电子表格考试 | 提供培训 | full | supported_label_under_rule | 阅读这次必需考试的要求说明。不要忽略它。 |
| J2 | 入门级分析师 | 必须具备两年专业分析经验。 | 明确必需 | 未写明 | 未写明 | full | label_conflict | 不要相信职位名称。 |
| J3 | 未陈述 | 一年经验者优先；欢迎应届毕业生。 | 明确优先 | 欢迎应届毕业生 | 未写明 | full | 优先；留待更仔细地阅读 | 不要把一年当成必需。 |
| J4 | 未陈述 | 具备报告相关经验 | 不清楚 | 未写明 | 未写明 | full | unclear | 不要补上 must 或零。 |
| J5 | 高级角色 | 排除后未使用 | 未分类 | 被样本规则排除 | 未使用 | 本次计数未使用 | 不相关；已保留排除 | 保留排除备注。 |
| J6 | 未陈述 | 没有描述文本 | 未知，不是零 | 未知 | 未知 | missing | 不可用 | 不要给该行分类。 |

这张表是虚构的。对于真实招聘信息，在该行上加上真实的 jobId 和 jobUrl。不要把这些类别抄到真实雇主上。

## 计数这些虚构行

这个虚构集合有六条收集到的行：J1、J2、J3、J4、J5 和 J6。

四行有可以分类的相关完整文本：J1、J2、J3 和 J4。

一行不相关：J5。

一行的文本不可用：J6。

4 + 1 + 1 = 6。

这个集合没有未能对应的 ID。如果有一个，你要把它和 J6 放在一起，放在这四行之外。

在这四行之内：

- J1 符合不要求先前经验的规则。该计数为 1。
- J2 与该规则冲突。该计数为 1。
- J3 有优先经验。该计数为 1。
- J4 仍然不清楚。该计数为 1。

1 + 1 + 1 + 1 = 4。

不要把四行中有一行这一比例称为成功率。单一比率会隐藏冲突、优先和不清楚用词之间的差别。这些结果需要不同的下一步。不要把这条规则称为初级职位的通用定义。这些计数只描述这些虚构句子在一条已写规则下的情况。

## 根据用词判断一条招聘信息

选择一条真实招聘信息。连同它的 jobId 和 jobUrl 复制它的经验句子。把该句标为必需、优先、不要求、提供培训或不清楚。把考试、执照和学历写在分开的行上。如果两句经验表述不一致，两条都保留并标出冲突。如果 descriptionStatus 为 missing，就写未知。只有在该台账行完成之后，才把这些用词与初级职位标签比较。

当台账显示原词、类别、其他条件和文本状态时，这项检查才完成。职位名称写着 junior 或 entry level 时，检查并未完成。

## 下一步行动

在相信一条招聘信息的初级职位标签之前，先给它的经验用词分类。从 [Indeed Jobs Scraper Actor](https://apify.com/chronometrica/indeed-jobs-scraper) 及其[公开 Task](https://apify.com/chronometrica/indeed-jobs-scraper/examples/indeed-jobs-scraper) 开始。设置一个角色、一个市场、maxItems 2 和 maxPagesPerSearch 1。保存这些行，然后在申请之前阅读完整的描述文本。

## 来源和延伸阅读

- [Indeed Jobs Scraper Actor](https://apify.com/chronometrica/indeed-jobs-scraper)
- [Indeed Jobs Scraper 公开 Task](https://apify.com/chronometrica/indeed-jobs-scraper/examples/indeed-jobs-scraper)
- [职位重复与再次发布](https://chronometrica.com/zh-Hans/articles/%E5%8E%BB%E9%99%A4%E9%87%8D%E5%A4%8D%E8%81%8C%E4%BD%8D%E5%88%97%E8%A1%A8-%E5%BD%92%E7%BB%84%E5%8F%AF%E8%83%BD%E7%9A%84%E9%87%8D%E6%96%B0%E5%8F%91%E5%B8%83/)
- [职位适合度入围清单](https://chronometrica.com/zh-Hans/articles/%E5%AF%B9%E7%85%A7%E6%8A%80%E8%83%BD%E6%8E%92%E5%BA%8F%E8%81%8C%E4%BD%8D/)
- [关于职位筛选器的公开投诉](https://www.reddit.com/r/ausjobs/comments/1tgj5t7/anyone_else_frustrated_by_the_useless_filters_on/)