跳至正文
AutoValue
2026年8月28日 · Data Quality

那個流量統計崩潰的夏天:一份來自爬蟲內部的日記

AutoValue Editorial
那個流量統計崩潰的夏天:一份來自爬蟲內部的日記

我幾乎每天都會開著一個分頁,上面只顯示資料來源的數量。不是什麼漂亮的東西——沒有圖表、沒有篩選器,就是我們拉取車輛刊登資訊的 1,375 個網站,每個旁邊列著一個數字,以及各自最後一次回報狀態的時間戳記。大多數日子它都無聊得像基礎設施本該有的樣子。這個夏天不是這樣,而我認為出錯的這段故事,對於你這個正在找車的人來說,比我們原本可能寫的那些「如何買二手車」的建議文章更有用。這是關於「即時資料」到底代表什麼——當餵養它的東西,是 1,375 個各自獨立、對你毫無虧欠的網站時。

七月中:一個我曾引以為傲的數字

到七月中,我們把來源清單推進到 73 個地區、共 1,190 個來源——這是花了幾週時間整理重複項目和失效連結的成果,而那些重複和失效原本一直悄悄灌水我們自己的統計數字。我記得當時覺得,1,190 個真實、有回報狀態的來源,是件值得驕傲的事。這代表大量各自獨立的經銷商網站、分類廣告板和拍賣資訊來源,每一個都有自己的 HTML 結構、自己的速率限制、自己對「爬蟲究竟是客人還是攻擊者」的看法。

接著,我們一直在跑的一個補建計畫開始有了進展——處理一份已經延宕數月的 683 個來源等候清單,有些被封鎖,有些根本還沒建好。七月下半,其中 274 個陸續建好並串接上線。到月底,運作中的來源數已來到 1,464。這種一週,值得截圖留念。

八月初:241 個來源,消失了

接著是那種毀掉你一整週心情的數字:一夜之間,241 個來源掉進了劣化狀態。不是因為我們做錯了什麼——而是我們代理伺服器供應商的帳戶在帳單那端過期了,而我們有一大部分流量正是透過輪替 IP 路由,目的就是為了不被那些會限制爬蟲速率的網站封鎖。沒有代理伺服器,就沒有新頁面,也就沒有新的刊登資訊。來源不會主動宣告自己壞了;它們只是悄悄停止回傳新資料,而舊的刊登資訊卻依然擺在那裡,看起來一切如常。

這正是那種不會出現在任何車輛網站(包括我們自己)刊登數量統計裡的部分,除非你刻意去查:一個「即時」的市集,可以讓過時的資料列和新鮮的並排放著,從外表看起來一模一樣。我們讓新的爬取派發任務,必須先通過實際的代理伺服器健康檢測才能啟動,這樣一個已經失效的代理池才不會在你不知情的狀況下讓品質繼續惡化,同時我們也暫停了排程中會讓情況更糟的部分。這不是什麼光鮮亮麗的工作。這種事,如果你從來沒聽說過,通常就代表有人把分內的事做好了。

順帶一提,這點值得直白地說出來:任何一個網站,如果聲稱自己每天都有一個固定、整齊的刊登數字,那它要嘛根本不是真正即時的,要嘛就是沒告訴你像這樣的一週曾經發生過。

那次凍結

代理伺服器續約解決了大部分問題。我沒料到的是,幾週後爬蟲本身竟然卡死了——一個收尾階段(teardown)的死鎖,19 個工作執行緒裡有 18 個卡在 futex_wait,CPU 用量掛零,整整持續了 75 小時。沒有當機,也沒有錯誤紀錄對誰大吼大叫。就只是……什麼事都沒發生,而儀表板卻繼續顯示著上一次成功執行的結果,彷彿那就是當下的狀態。我們當時還沒在那台主機上裝設看門狗機制,而這種話,通常只有在描述的事情已經真的發生過一次之後,你才會寫得出來。

我們建了看門狗機制。我們暫停了排程,直到確認代理伺服器續約已經穩定下來,而不是冒險讓一次半劣化狀態的爬取,悄悄地用壞資料取代好資料——一個被爬取過的來源,它的刊登資訊會被「取代」,而不是合併,所以一次糟糕的執行,不只是無法新增資料而已,它還可能主動刪除好的資料列,換上更差的進去。正是這種不對稱性,讓我們寧可讓資料放一天不更新,也不願讓它在劣化狀態下運作。

數字最後落在哪裡

以下是今天的統計數字,以及讓我們走到這裡的這六週的樣貌:

我們最終落在 73 個地區、共 1,375 個來源,餵養著 1,108,535 筆即時刊登資訊,其中有 12,823 筆目前被標記為低於所屬地區同儕行情的價格。這比七月的高峰少了大約 90 個來源——那 241 個劣化的來源裡,有一些始終沒能完全恢復,還有少數幾個網站,在這段期間改變了它們的反爬蟲策略,需要的是重建而不是重新連接。我們仍在處理其中幾個。

這一切對你來說究竟值多少

這一切都不會改變你該買哪一款車。但它應該會改變你閱讀任何車輛網站上「即時庫存」數字的方式,不只是我們的。就目前而言,法國以 67,569 筆刊登資訊在我們的地區統計中排名第一,日本以 61,940 筆緊追在後,而這些數字會變動——不是因為二手車市場本身變化得那麼快,而是因為監看它的基礎設施在變動。一筆因為來源劣化而過時三天的刊登資訊,除非平台誠實地說明其中差異,否則看起來會和一筆全新的資訊一模一樣。

我們寧願告訴你那 75 小時的凍結事件,也不願假裝我們的數字從來不曾動搖。一份從不承認自己有過糟糕一週的資料集,你更該對它多一分懷疑,而不是少一分。

Data QualityWEB ScrapingMethodologyTransparencyMarket Data
分享

相關文章

那個流量統計崩潰的夏天:一份來自爬蟲內部的日記 | AutoValue