[V10.337] 兼容 PChome 商品 API list 回應
All checks were successful
CD Pipeline / deploy (push) Successful in 1m6s

This commit is contained in:
OoO
2026-05-20 15:00:22 +08:00
parent 255140224b
commit 3f070a668b
3 changed files with 57 additions and 3 deletions

View File

@@ -238,8 +238,28 @@ class PChomeCrawler:
data = response.json()
crawled_at = datetime.now()
if isinstance(data, dict):
product_entries = data.items()
product_count = len(data)
elif isinstance(data, list):
product_entries = [
((item or {}).get('Id') or f'index_{idx}', item)
for idx, item in enumerate(data)
if isinstance(item, dict)
]
product_count = len(product_entries)
failed_count += max(0, len(data) - product_count)
else:
logger.warning(
"PChome 商品 API 回傳格式異常 (批次 %s): %s",
i // batch_size + 1,
type(data).__name__,
)
failed_count += len(batch)
continue
# 解析商品資料
for prod_key, prod_data in data.items():
for prod_key, prod_data in product_entries:
try:
product = self._parse_product_data(prod_data, crawled_at)
if product:
@@ -248,7 +268,7 @@ class PChomeCrawler:
logger.warning(f"解析商品 {prod_key} 失敗: {e}")
failed_count += 1
logger.info(f"批次 {i // batch_size + 1}: 取得 {len(data)} 個商品資料")
logger.info(f"批次 {i // batch_size + 1}: 取得 {product_count} 個商品資料")
except requests.RequestException as e:
logger.error(f"API 請求失敗 (批次 {i // batch_size + 1}): {e}")