This commit is contained in:
fuzhongyun 2026-03-11 18:23:55 +08:00
parent 18338612ba
commit 36f30b85cc
3 changed files with 23 additions and 28 deletions

2
.gitignore vendored
View File

@ -2,3 +2,5 @@ scbank_data.jsonl
data/ data/
output/ output/
.trae/ .trae/
实物系统API文档.pdf
*.pyc

View File

@ -56,17 +56,17 @@ class SCBankCollector:
if (data && typeof data === 'object') { if (data && typeof data === 'object') {
const str = JSON.stringify(data); const str = JSON.stringify(data);
// 1. 过滤噪音 (IsQX) // 1. 识别列表 (pageDataList)
if (str.includes('IsQX') || (data.body && data.body.IsQX)) { const isList = data.body &&
return data; data.body.pageDataList &&
} Array.isArray(data.body.pageDataList);
// 2. 识别列表 (rows list) // 2. 识别详情 (orderNo + goodsInfoList)
const isList = (data.rows && Array.isArray(data.rows) && data.rows.length > 0) || // 详情页通常包含 orderNo goodsInfoList且不包含 pageDataList
(data.list && Array.isArray(data.list) && data.list.length > 0); const isDetail = data.body &&
data.body.orderNo &&
// 3. 识别详情 (orderNo + 长度校验) data.body.goodsInfoList &&
const isDetail = str.includes('orderNo') && str.length > 300; !data.body.pageDataList;
if (isList) { if (isList) {
console.log('__INTERCEPTED_LIST__:' + str); console.log('__INTERCEPTED_LIST__:' + str);
@ -114,7 +114,7 @@ class SCBankCollector:
try: try:
self.page.wait_for_url("**/homePage**", timeout=0) self.page.wait_for_url("**/homePage**", timeout=0)
self.log("检测到登录成功!") self.log("检测到登录成功!")
time.sleep(2) time.sleep(1)
except Exception as e: except Exception as e:
self.log(f"登录等待超时或失败: {e}") self.log(f"登录等待超时或失败: {e}")
return return
@ -124,7 +124,7 @@ class SCBankCollector:
self.log(f"跳转至订单管理页面: {self.target_url}") self.log(f"跳转至订单管理页面: {self.target_url}")
self.page.goto(self.target_url) self.page.goto(self.target_url)
self.page.wait_for_load_state("domcontentloaded") self.page.wait_for_load_state("domcontentloaded")
time.sleep(3) time.sleep(0.5)
# 3. 筛选状态 # 3. 筛选状态
self._filter_status() self._filter_status()
@ -153,7 +153,7 @@ class SCBankCollector:
self.browser.close() self.browser.close()
def _filter_status(self): def _filter_status(self):
self.log("筛选: 订单类型 -> 待发货") self.log("正在点击“待发货”标签页")
try: try:
# 定位 Tab # 定位 Tab
tab_selector = ".el-tabs__item:has-text('待发货')" tab_selector = ".el-tabs__item:has-text('待发货')"
@ -162,19 +162,10 @@ class SCBankCollector:
if tab.count() > 0: if tab.count() > 0:
if "is-active" not in tab.get_attribute("class"): if "is-active" not in tab.get_attribute("class"):
tab.click() tab.click()
self.log(" -> 点击“待发货”Tab") self.log("已点击“待发货”标签页")
time.sleep(1) time.sleep(1)
else: else:
self.log(" -> 已处于“待发货”Tab") self.log("“待发货”标签页已经是选中状态")
# 点击查询
query_btn = self.page.locator("button.el-button--primary:has-text('查询')")
if query_btn.count() > 0:
query_btn.click()
self.log(" -> 点击“查询”刷新列表")
time.sleep(3)
else:
self.log(" [WARN] 未找到“查询”按钮")
else: else:
self.log(" [WARN] 未找到“待发货”Tab") self.log(" [WARN] 未找到“待发货”Tab")
except Exception as e: except Exception as e:

View File

@ -150,11 +150,13 @@ class SCBankProcessor:
results.append({ results.append({
"处理状态": "成功" if success else "失败", "处理状态": "成功" if success else "失败",
"失败原因": "" if success else msg, "失败原因": "" if success else msg,
"商城订单号": order_no, "下单时间": order_time,
"订单编号": order_no,
"下单用户手机号码": detail.get("orderMobile"),
"商户名称": detail.get("exMerchant"),
"订单金额": detail.get("orderAmt"),
"商品名称": goods_name, "商品名称": goods_name,
"内部商品ID": internal_pid, "内部商品ID": internal_pid,
"订单金额": detail.get("orderAmt"),
"下单时间": order_time
}) })
# 5. 导出 Excel # 5. 导出 Excel