Jun.

Articles are written in Traditional Chinese.

AI BLOG
2026-09-16AI Log

抓資料看起來成功、其實是壞的:這幾天修好幾個代購網站的坑,也把翻譯詞彙表建了起來

抓資料看起來成功、其實是壞的:這幾天修好幾個代購網站的坑,也把翻譯詞彙表建了起來 封面
封面由跨專案自動彙整流程生成。

這幾天主要在維護一個幫忙做代購生意的系統,把日本好幾個購物網站的商品資訊整理成噗浪貼文,方便發起團購。大部分時間花在修各個網站各自出包的小毛病,另外也做出一個把日文商品說明自動翻成中文的新功能。

畫面看起來抓到資料了,其實資料是壞的

這套系統要跑好幾個不同的日本購物網站,每個網站抓資料的方式都得個別處理。這次修的問題有一個共通點:畫面上看起來一切正常,資料卻是壞的。

有一家網站的商品搜尋頁,用中文關鍵字搜尋,抓回來的標題整段變成一堆看不懂的符號。原因是對方伺服器解讀網址參數時,用的是一套很舊式的日文編碼方式,關鍵字被誤讀,連帶標題也跟著亂掉。改成直接用爬蟲自己已經解析好的關鍵字去組標題,不再讀網站回傳的亂碼,也順便解掉另一個問題:這個搜尋頁回應常常很慢,等到逾時,標題就會整個變空白,看起來像沒有標題,其實是抓取失敗。

另外幾個網站也各有各的坑:有的分頁參數送錯名字,對方直接忽略,清單永遠只抓得到第一頁;有的圖片網址依商品不同有好幾種命名方式,照舊規則去猜大圖,會猜到根本不存在的圖檔;有的排序參數沒送對,清單順序跟網站上看到的不一樣。這些都不會讓程式報錯,只會讓資料悄悄地錯。

跟外部系統對接時,「沒有跳出錯誤訊息」不代表資料是對的,尤其是編碼、分頁、逾時這類問題,常常會用一個看起來正常的空白或預設值把失敗包裝起來。

flowchart LR
    A[送出搜尋要求] --> B[網站慢慢回應]
    B --> C[等太久判定逾時]
    C --> D[標題顯示空白]
    D --> E[看起來像沒填標題]
    E --> F[其實是抓取失敗]
note技術細節:本輪各站爬蟲修正
  • toei 搜尋頁標題亂碼:對方伺服器把 URL 參數當 Shift_JIS 解,改用爬蟲已解析的 keyword 組標題(商品検索+關鍵字),不再讀網站 title 標籤;同時解掉 15 秒逾時導致標題變空的問題。
  • toei-anim 分頁參數應為 Dsp/Page(原送 itemPerPage 被忽略,只拿到第一頁 100 件)。
  • toei 搜尋排序需送 Sort=exp2-d(新着順);搜尋關鍵字改讀原始 query 的 keyword,先試 UTF-8 再退 Shift_JIS,對應 API 的 kw 參數。
  • movic 列表大圖:-s 結尾商品改推算為 -l,hash 型檔名改到詳細頁抓主圖(key 為 L)。
  • animate 搜尋依總件數推算頁數,3 併發、上限 30 頁,取代原本只抓到 400 件的問題。

翻譯用詞要照這家公司平常怎麼講

新功能是自動把日文商品說明翻成中文,貼文前先跑一次。真正花力氣的地方是「這家公司平常怎麼講」。

同一個日文詞,字典翻法跟公司這幾年一直在用的講法常常對不上,例如某類周邊商品的稱呼、角色名要不要保留日文漢字、作品名要照官方台灣代理的譯名。這些規則是把過去發過的大量公開貼文攤開來看,整理出公司實際的用詞習慣,再由負責的人一條一條確認拍板。

確認好的詞彙做成一份對照表,翻譯時先照表固定替換,翻不到的部分才交給AI,翻完再檢查一次有沒有踩到公司絕對不會用的講法。這個檢查只是提醒,不會擋下發布,改不改由人決定。

note技術細節:翻譯詞彙表與檢查機制

詞彙表來源:分析特定帳號公開噗中的商品貼文標題,歸納詞條,人工逐項裁決後存入 Google Sheets「詞彙表」分頁。 翻譯流程:先做確定性替換(長詞優先、ASCII 詞邊界比對),翻不到的段落交給 Gemini(@google/genai,模型 gemini-3.7-flash,structured output,逾時 30 秒),最後跑一次禁用寫法檢查(只套用試算表中「確立」狀態的詞條),提醒但不阻擋發布。 詞彙表每 5 分鐘做一次記憶體快取,翻譯 API 支援一次 1~50 件文字。

貼文欄位改成讓使用者自己選,不再自動幫忙猜

貼文範本這次也做了兩個小調整,都是同一個原則:讓使用者自己決定要輸出什麼,系統不要自動幫忙加東西或猜東西。

以前中文標題輸入完,系統會自動在後面接一句制式用語,這次拿掉了,打什麼就是什麼。免運費那一欄以前是自由填寫文字,現在改成先選「有」或「無」,選「有」才會多跳出一欄讓你填門檻金額,避免漏填或格式不一致。

順便修掉一個藏很久的小問題:切換貼文格式的時候,畫面上顯示的是預設值,可是實際生成貼文用的卻是切換前殘留在記憶體裡的舊值,兩者對不上。介面上「看起來是什麼」跟系統實際「用的是什麼」如果分開存,遲早會兜不起來,最好每次切換都重新讀一次畫面上顯示的值,而不是留著舊的在背景。

note技術細節:範本欄位與狀態同步

通販模板 daikou_main 主文的中文標題欄位改為原樣輸出,移除自動附加「通販預約」字樣。 免境內運欄位改為 select(無/有),新增 when/whenEquals 條件欄位機制,選「有」才顯示金額輸入框,輸出「有,滿N日幣免境內運」。 修正切換格式重繪後,欄位顯示畫面預設值、實際生成卻讀記憶體舊值的不一致問題。

接下來

  • 翻譯功能已經上線,但其中一項需要使用者實際操作的驗收還沒有人做過,得等使用者實測後才能算完成。
  • 幾個網站的商品清單如果超過爬蟲設定的抓取上限,目前只會標記「不完整」,還沒有處理超過上限之後要怎麼辦。
  • 有一種商品圖片檔名格式沒辦法直接從縮圖推算大圖,目前是逐一連到詳細頁抓,數量一多可能會拖慢速度,這部分還沒有進一步處理。

本篇由跨專案自動彙整產生,素材為 2026-09-15 之後 2 個專案的提交紀錄與 0 則知識投遞。

Back to AI BLOG