更新处理这个外观部分

This commit is contained in:
super
2026-05-01 00:09:14 +08:00
parent 668226a99d
commit 70658041a5
9 changed files with 411 additions and 69 deletions

View File

@@ -288,7 +288,7 @@ class SpiderTask:
print(f"[{timestamp}] [PriceTask] [{level}] {message}")
@staticmethod
def group_by_id_prefix(data):
def group_by_id_prefix(data):
"""
根据每条数据的 id 字段进行分组:
- 如果 id 为 "2_1",则取 "_" 前面的 "2" 作为分组 key
@@ -304,10 +304,35 @@ class SpiderTask:
item_id = str(item.get("id", ""))
group_key = item_id.split("_")[0]
grouped[group_key].append(item)
return list(grouped.values())
def process_task(self, task_data: dict):
return list(grouped.values())
@staticmethod
def normalize_groups(data):
groups = data.get("groups")
if isinstance(groups, list) and len(groups) > 0:
return groups
rows = data.get("rows") or data.get("items") or []
if not isinstance(rows, list) or len(rows) == 0:
return []
normalized = []
for items in SpiderTask.group_by_id_prefix(rows):
first = items[0] if items else {}
item_id = str(first.get("id") or first.get("displayId") or "")
base_id = item_id.split("_")[0] if item_id else ""
normalized.append({
"sourceFileKey": first.get("sourceFileKey", ""),
"sourceFilename": first.get("sourceFilename", ""),
"groupKey": first.get("groupKey") or base_id,
"baseId": first.get("baseId") or base_id,
"displayId": first.get("displayId") or item_id,
"items": items,
})
return normalized
def process_task(self, task_data: dict):
"""处理审批任务主入口
Args:
@@ -316,7 +341,7 @@ class SpiderTask:
try:
data = task_data.get("data", {})
task_id = data.get("taskId")
groups = data.get("groups")
groups = self.normalize_groups(data)
# 用于测试
limit = data.get("limit", None)
@@ -328,7 +353,11 @@ class SpiderTask:
self.log(f"开始处理爬取任务 {task_id}{len(groups)} 个任务")
from config import runing_task
if not groups:
self.log("appearance-patent groups/rows is empty, skip", "WARNING")
return
from config import runing_task
runing_task[task_id] = {
"status": "running",
"start_time": datetime.now().strftime("%Y-%m-%d %H:%M:%S"),
@@ -354,11 +383,12 @@ class SpiderTask:
try:
# 数据整理
# new_items = self.group_by_id_prefix(items)
result = []
for gp_index,gp in enumerate(groups):
items = gp.get("items", [])
for index,value in enumerate(items):
result = []
for gp_index,gp in enumerate(groups):
items = gp.get("items", [])
return_data = {}
for index,value in enumerate(items):
return_data = {
'image_url': "",
@@ -369,13 +399,15 @@ class SpiderTask:
return_data = None
for _ in range(max_retry):
try:
return_data = chrome.run(country, asin)
return_data = chrome.run(country, asin) or {}
self.log(f"抓取结果->{return_data}")
break
except Exception as e:
if "与页面的连接已断开" in str(e):
chrome = ChromeAmzone()
if return_data.get("image_url"):
if not isinstance(return_data, dict):
return_data = {}
if return_data.get("image_url"):
break
group_item = [
@@ -8381,4 +8413,4 @@ if __name__ == '__main__':
]
# spide.process_task(task_data)
res = SpiderTask.group_by_id_prefix(task_data)
print(res)
print(res)