

# 如何檢查職位匯出是否包含完整描述

先收集職位詳情文字，檢查狀態，並與真正的來源頁面比對內容，然後才把它當作完整描述使用。搜尋摘要是短預覽，可能漏掉職責或規則。單靠長度不能證明描述完整。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/)