
Actor 是在託管環境中執行的資料擷取程式。本文比較 Chronometrica TikTok Comments Scraper 與 Clockworks TikTok Comments Scraper。主要問題是:你的工作從哪裡開始,以及你會如何核對擷取到的資料列。
公開規格的核對日期為 2026 年 10 月 20 日。下方範例採用文件記載的輸入格式。這是設定範例,並非付費執行結果,也不是經過驗證的實際輸出。
先確定要研究的貼文清單
一位研究者問道:「如何取得 TikTok 的所有留言資料?」該貼文描述了一款工具,可以擷取頂層留言,卻無法展開更多回覆。因此,擷取回覆確實是需求的一部分。「所有」表達的是期望的結果,並不能證明擷取工具實際能傳回哪些資料。公開研究提問。
頂層留言直接回應貼文。回覆則是在留言討論串內回應。如果你的研究問題涉及討論內容,只擷取頂層留言,可能會漏掉你想研究的對話。
但不能只看是否支援回覆,就決定使用哪一款工具。請先確定你是否已經知道要擷取哪些貼文。固定清單能明確界定輸入範圍。你可以逐一核對擷取到的資料列,確認是否屬於指定貼文。
如果從個人檔案開始,選取影片就是擷取工作的一部分。Clockworks 的文件記載,可從個人檔案的使用者名稱取得影片清單。這種輸入流程可能在你開始核對留言之前,就影響工具選擇。Clockworks 規格。
比較輸出欄位之前,先記下工作的起點。「這些貼文的留言」與「透過這些個人檔案找到的影片留言」,是不同的擷取要求。
比較文件記載的適用情況
Chronometrica 的文件記載了嚴格的指定貼文識別資訊檢查,以及涵蓋整次執行的留言 ID 去重處理。去重處理是指:同一個留言 ID 即使出現多次,也不會被當成不同留言納入。文件也記載,回覆會以獨立資料列呈現,每篇貼文的摘要會區分達到上限與來源已無可擷取資料的情況。這些功能適合需要仔細核對的固定貼文清單。Chronometrica 規格。
| 選擇依據 | Chronometrica | Clockworks |
|---|---|---|
| 本文重點比較的適用情況(依文件記載) | 核對已知貼文,取得不重複的留言資料列 | 從個人檔案的使用者名稱取得影片清單 |
| 回覆 | 回覆以獨立資料列呈現 | 支援回覆 |
| 擷取上限 | 頂層留言上限與獨立的回覆上限 | 每篇貼文的上限,以及每則上層留言的回覆上限 |
| 選擇的主要原因 | 核對擷取到的資料列是否屬於指定貼文 | 先從提供的個人檔案尋找影片 |
此表整理了已核對的規格,並未對速度或實測準確度排名。Chronometrica 規格、Clockworks 規格、Clockworks 輸入結構定義。
Chronometrica 的文件也記載,可擷取公開影片及相片/輪播貼文的留言。其回覆欄位包括 `parentCommentId`、`replyToCommentId`、`isReply`、`replyDepth` 和 `replyCount`。這些欄位有助於保留討論串結構,但不能證明討論串的每個部分都可取得。Chronometrica 規格。
這項比較針對文件記載的適用情況。表中未列出的功能,不代表產品沒有該功能。本文沒有取得可證明任何一方在準確度或可靠性上更優的受控執行結果。本文也未比較價格,因為保存的 Clockworks Store 頁首與 README 所列價格不一致。Clockworks Store 頁面與 README。
分別設定留言與回覆上限
上限是你要求一次擷取在指定範圍內最多傳回的數量,並非保證取得的資料列數。
在 Chronometrica 中,`maxCommentsPerVideo` 可將頂層留言上限設為 1 至 1,000。`includeReplies` 開關控制是否擷取回覆。啟用回覆擷取後,`maxRepliesPerComment` 可另行設定每則留言的回覆上限,範圍為 1 至 100。Chronometrica 輸入結構定義。
規劃資料集大小時,分開設定這些上限很重要。如果要求擷取 3 則頂層留言,也要求擷取回覆,結果可能超過 3 個資料列。實際取得的資料列數,也可能少於設定允許的數量。
下列設定範例採用文件記載的欄位及有效範圍。公開網址僅用來示範輸入格式。使用前,請將它換成與研究相關的公開貼文。
{
"startUrls": [
"https://www.tiktok.com/@zachking/video/7631200623693729038"
],
"maxCommentsPerVideo": 3,
"includeReplies": true,
"maxRepliesPerComment": 2
}使用這些設定時,3 則頂層留言各自可能取得 2 則回覆。因此,這個簡單情況的可能資料量為 3 個頂層留言資料列,加上 6 個回覆資料列,共 9 個資料列。這是規劃用的計算,並非預期結果。可取得的留言及回覆數量,可能使其中任一項的實際數量低於上限。
Task 是已儲存的輸入預設設定。已核對的 TikTok 留言與回覆匯出 Task 提供了可公開使用的起點。使用前,請確認其輸入設定是否符合你的研究。
先選擇能讓你完整檢查小批資料的上限。了解輸出及其限制後,再提高上限。
保留足夠資訊,以核對每個資料列
要建立可核對的資料集,只有留言文字並不足夠。你需要將每個資料列連結到其來源,並在適用時連結到其上層留言。
請將原始指定貼文清單與匯出資料一同保存。保留輸入的識別資訊、傳回的貼文識別資訊、留言 ID,以及可取得的回覆關聯。指定清單記錄了你要求擷取的內容。資料列的識別資訊則讓你能核對實際納入的內容。
如果資料提供穩定的貼文 ID,請用它來檢查資料列是否屬於指定清單。這項檢查只問一個簡單問題:這個資料列是否屬於其中一篇指定貼文?相似的貼文說明文字或創作者名稱,無法回答這個問題。
留言 ID 用於識別留言,以檢查重複。請比較整次執行的 ID,不要只在各個匯出檔案內分別比較。將擷取結果拆成多個檔案,不應使重複出現的紀錄變成額外納入的留言。
匯出時,請保留文件記載的回覆欄位。使用 `isReply` 區分資料列類型,並用可取得的上層留言關聯來保留彼此關係。保留 `replyDepth` 和 `replyCount`,作為來源背景資訊。不要把回覆數當成已擷取相同數量回覆資料列的證明。Chronometrica 輸出規格。
如果必要的識別資訊或關聯值缺失,請保留其缺失狀態。不要以 0 代替,也不要根據鄰近文字推斷上層留言。如果缺失值使你無法完成所需檢查,請將該資料列標記為待審查。
核對擷取資料列與執行摘要是否一致
核對是指檢查數量與紀錄是否一致。計算最終資料集總數之前,請先閱讀實際的執行摘要。
Chronometrica 的文件記載,其摘要會區分達到上限與來源已無可擷取資料的情況。請使用傳回摘要中的標籤及定義。不要為了配合報告而自行建立欄位,並將其視為工具原生的摘要欄位。「來源已無可擷取資料」標籤也不能證明已完整保存該貼文歷來的留言。Chronometrica 規格。
請使用以下簡單的核對方法:
- 儲存指定貼文 ID 及擷取設定。
- 閱讀每篇貼文依規格提供的摘要及停止條件。
- 逐一核對資料列是否屬於指定貼文清單。
- 檢查整次執行中是否有重複出現的留言 ID。
- 分別計算已納入的頂層留言資料列及回覆資料列數量。
- 將已納入的總數與匯出資料及摘要比較。
- 記錄任何無法釐清的差異。
請在使用者自行維護的核對紀錄中,記下這些決定。這是你自己的紀錄,並非 Actor 的輸出欄位。紀錄可列出匯入的觀測紀錄數、排除的觀測紀錄、已納入的不重複資料列,以及尚未完成的檢查。
觀測紀錄是指匯入檔案中一次出現的紀錄。不重複留言則是完成必要檢查後,確認為不同留言的項目。這兩者不應共用同一個總數。如果數字不同,請同時保留,並說明原因。
也請保留每篇貼文的結果。批次總數可能掩蓋尚未審查的貼文。分開列出每篇貼文的總數,才能看出哪些貼文受到上限限制,或哪些貼文仍有必要檢查尚未完成。
逐步核對含有 8 筆觀測紀錄的虛構檔案
下列練習為虛構範例。這是使用者自行核對資料的示範,並非目前任一 Actor 的輸出、基準測試或客戶成果。
假設匯入檔案含有 8 筆觀測紀錄。其中 2 筆的留言 ID 與先前出現的 ID 重複。另有 1 筆屬於指定清單以外的貼文。排除這 3 筆觀測紀錄後,剩下 5 個已納入的不重複資料列:
`8 − 2 − 1 = 5 accepted unique rows`
這 5 個資料列中,3 個是頂層留言,2 個是回覆。已納入資料列中的回覆比例為:
`2 ÷ 5 × 100 = 40% of accepted rows`
分母很重要。40% 描述的是經過上述檢查後,納入檔案中的資料。它不代表來源貼文的全部留言、不代表曾回覆的人數比例,也不代表這次擷取取得了所有可取得回覆的多少比例。
8 筆觀測紀錄的總數,說明你匯入了多少紀錄。5 個資料列的總數,說明有多少不重複資料列通過檢查。3 個頂層留言與 2 個回覆的分類,則說明已納入的資料列類型。每個數字各有不同用途。
在適當情況下,請將排除的觀測紀錄及原因保留在核對紀錄中。這樣其他審查者就能核對計算過程,而不會把已排除的資料列當成已納入資料集的一部分。
這個範例說明了為何需要檢查識別資訊及重複紀錄。它不表示目前任一 Actor 曾產生這些虛構問題。如果你的用途是研究固定的貼文清單,Chronometrica 文件記載的這些檢查功能,就是進一步查看其規格的理由。Chronometrica 規格。
保留回覆脈絡,不自行填補缺漏
使用可取得的關聯,將已納入的回覆歸到各自的上層留言下。這樣既能用資料集檢視討論串,也能清楚保留來源中的關係。
檢查每則被引用的上層留言,是否存在於已納入的資料列中。如果存在,請保留關聯。如果不存在,仍須保留引用,並將脈絡標記為尚未釐清。上層留言缺失,並不能說明它為何不在資料中。
不要將回覆連到試算表中最接近的資料列。資料列順序不能代替上層留言關聯。也不要根據回覆推斷缺失的上層留言文字。
已納入的回覆,仍可能缺少完整脈絡。後續分析時,請清楚保留這項區別。例如,你可能可以將該回覆計為 1 個資料列,卻沒有足夠脈絡來解讀整段對話。
如果之後要為質性編碼整理資料,請將這些檢查紀錄與匯出資料一同保存。供 NVivo 使用的 TikTok 留言指南 說明了下一階段的工作。本文的選擇重點則是貼文選取、回覆結構及批次總數。
擴大擷取前,先說明資料集範圍
實用的報告會說明已納入的檔案包含什麼,以及擷取要求允許取得哪些資料。請列出指定貼文、擷取設定、已納入的不重複資料列數、頂層留言數、回覆數,以及尚未釐清的脈絡。
請將實際觀測總數與設定上限分開。上限描述擷取要求,已納入的數量則描述核對後的檔案。兩者都不應取代對方。
對於前述虛構練習,可以清楚寫成:「經核對的檔案包含來自指定貼文的 5 個已納入不重複資料列:3 則頂層留言及 2 則回覆。」再補上相關設定及記錄的停止條件。不要將這段話改成那些貼文總共只有 5 則留言的說法。
如果必要檢查尚未完成,也請說明。未知值應維持未知。0 表示測得的數量為 0,不應用來代表缺失的數量。
只有在小批擷取能提供可用的識別資訊、清楚的資料列類型,以及足以回答研究問題的討論串脈絡後,才擴大工作。如果必要的關聯尚未釐清,請決定分析是否仍可使用該資料列。在擷取更多資料之前,先記錄這項決定。
來源與延伸閱讀
作者 Chronometrica · 更新日期
返回頂端 ↑