

# 如何检查职位导出是否包含完整描述

收集职位详情文本，检查状态，并在将其当作完整描述使用之前，把文字与真实来源页面进行比对。搜索摘要是一段短预览，可能遗漏职责或规则。仅凭长度并不能证明描述是完整的。Actor 是托管的数据采集程序。Task 是已保存的输入预设。

## 采集设置

要采集职位数据，请使用 [Indeed Jobs Scraper](https://apify.com/chronometrica/indeed-jobs-scraper) Actor，并采用 [Indeed Jobs Scraper Task Preset](https://apify.com/chronometrica/indeed-jobs-scraper/examples/indeed-jobs-scraper) 中已保存的输入。设置一个相关查询和国家/地区，`maxItems=2`、`maxPagesPerSearch=1` 以及 `saveOnlyUniqueItems=true`。Indeed 会自动尝试获取完整详情；读者不需要 fetchJobDetails 设置。通过 `scrapeCompanyDetails` 进行的公司信息补充仍然是分开的。

输出模式包含 `jobId`、`jobUrl`、`title`、`companyName`、`locationRaw`、`scrapedAt`、`descriptionStatus`、`descriptionText`、`descriptionSnippet` 和 `descriptionHtml`。其中，`descriptionText` 在可用时提供纯文本全文，`descriptionSnippet` 保存预览文本，`descriptionHtml` 作为保留的来源格式证据。仅有 HTML 并不能证明来源身份或完整性。你必须核对来源身份，并检查实际全文。

Actor 状态值严格为小写的 `full` 和 `missing`。仅摘要和不可用这两个类别，是读者用来分拣职位记录的复核分组，而不是承诺的 Actor 状态。仅凭状态或长度并不能证明文本完整。

## 采集方法

1. 确定采集目的。决定你需要来源的哪些部分，例如职责和必要条件。这决定现有文本是否足够。简单的字数统计做不到这一点。
2. 采集一个小型搜索样本。保留来源身份、文本字段、状态、观察时间和输出。检查已保存的行、上限和失败情况。
3. 把职位记录分成三个工作分组：完整详情候选、仅摘要、不可用。如果状态显示 full 但文本为空，将其送去复核。如果状态未知，保留该记录并进行检查，不要猜测。
4. 打开确切的职位链接，并核对来源职位 ID、标题、公司和地点。确认提取的职责和任职条件与该职位相符。推荐职位和搜索预览可能包含错误文本。
5. 将来源中必需的章节与采集到的文本进行比对。缺少实质性章节时，分析保持待定。在有帮助时保留 `descriptionHtml` 作为来源格式证据，但请记住，仅有 HTML 既不能证明身份，也不能证明完整性。记录检查时间，因为来源可能在抓取之后发生变化。
6. 对于仅摘要或不可用的情况，如果来源后来变为可访问，之后进行一次小规模重试可能有帮助，但不要无休止地循环，也不要突破访问限制。如果可以，请手动使用官方来源。将旧检查和新检查分开保存。如果全文仍然得不到，将该行排除在分析之外。
7. 保存一份就绪台账，包含职位键、状态、必需章节、来源匹配结果、检查日期和决定。下游分析必须使用这一关卡，而不是使用一个会隐藏摘要的合并列。

## 虚构示例与结果

本节中的所有来源文本和检查都是编造的。四条已采集的职位列表展示其运作方式：

- J1 的状态为 full。文本包含职责、工作地点和规则。职位 ID 和公司与来源相符。在已定义的分析中接受此条。
- J2 的状态为 missing，归入仅摘要这一职位记录复核分组。预览给出一段简短介绍，但完整任职条件缺失。在检查全文之前，将其排除在要求分析之外。
- J3 的状态为 missing，归入不可用这一职位记录复核分组。文本为 null。来源需要的访问当前不可用。将其保持为未知。
- J4 的状态为 full，但这段长文本中的标题和公司与所请求的职位不同。复核这一不匹配。不要把长度或状态当作证明。

| 职位列表 | Actor 状态 | 来源匹配 | 决定 |
| --- | --- | --- | --- |
| J1 | full | 匹配 | 已接受 |
| J2 | missing | 摘要 | 待定 |
| J3 | missing | 不可用 | 未知 |
| J4 | full | 不匹配 | 复核 |

被 Actor 标为 full 的行是 4 条中的 2 条，即 50%。经来源检查后就绪的行是 4 条中的 1 条，即 25%。这些数字衡量的是这个编造的小型来源测试用例中的不同阶段。两项说法都不是 Actor 的整体准确率分数。

如果后续检查为 J2 取得了适当的详情，请追加那次新检查。对于这同一个四条职位列表示例，就绪比例变为 4 条中的 2 条，即 50%。旧的历史状态保持不变。不要改写初始文件，也不要把后来的数值报告为初始覆盖率。最终产物是一份四行的状态与来源匹配台账，其中最初只有 J1 被放行，可用于要求分析。

## 下一步行动

打开 [Indeed Jobs Scraper](https://apify.com/chronometrica/indeed-jobs-scraper) Actor，按 [Indeed Jobs Scraper Task](https://apify.com/chronometrica/indeed-jobs-scraper/examples/indeed-jobs-scraper) 中的查询和国家/地区设置运行一次小型采集样本，并在扩大采集或开始分析之前，接受一条已与来源匹配的完整描述。

## 来源和延伸阅读

- [Indeed Jobs Scraper Actor](https://apify.com/chronometrica/indeed-jobs-scraper)
- [Indeed Jobs Scraper Task Preset](https://apify.com/chronometrica/indeed-jobs-scraper/examples/indeed-jobs-scraper)
- [Selenium Python 网页抓取讨论](https://www.reddit.com/r/learnpython/comments/rlkdb3/selenium_python_webscraping_getting_full_job/)