From 36f30b85cc55cd49991241a8c3f3407d662ace43 Mon Sep 17 00:00:00 2001 From: fuzhongyun <15339891972@163.com> Date: Wed, 11 Mar 2026 18:23:55 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9A=82=E5=AD=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 4 +++- scbank_collector.py | 39 +++++++++++++++------------------------ scbank_processor.py | 8 +++++--- 3 files changed, 23 insertions(+), 28 deletions(-) diff --git a/.gitignore b/.gitignore index af60cb8..dd43a31 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,6 @@ scbank_data.jsonl data/ output/ -.trae/ \ No newline at end of file +.trae/ +实物系统API文档.pdf +*.pyc \ No newline at end of file diff --git a/scbank_collector.py b/scbank_collector.py index 66c919b..9ec624f 100644 --- a/scbank_collector.py +++ b/scbank_collector.py @@ -56,17 +56,17 @@ class SCBankCollector: if (data && typeof data === 'object') { const str = JSON.stringify(data); - // 1. 过滤噪音 (IsQX) - if (str.includes('IsQX') || (data.body && data.body.IsQX)) { - return data; - } - - // 2. 识别列表 (rows 或 list) - const isList = (data.rows && Array.isArray(data.rows) && data.rows.length > 0) || - (data.list && Array.isArray(data.list) && data.list.length > 0); + // 1. 识别列表 (pageDataList) + const isList = data.body && + data.body.pageDataList && + Array.isArray(data.body.pageDataList); - // 3. 识别详情 (orderNo + 长度校验) - const isDetail = str.includes('orderNo') && str.length > 300; + // 2. 识别详情 (orderNo + goodsInfoList) + // 详情页通常包含 orderNo 和 goodsInfoList,且不包含 pageDataList + const isDetail = data.body && + data.body.orderNo && + data.body.goodsInfoList && + !data.body.pageDataList; if (isList) { console.log('__INTERCEPTED_LIST__:' + str); @@ -114,7 +114,7 @@ class SCBankCollector: try: self.page.wait_for_url("**/homePage**", timeout=0) self.log("检测到登录成功!") - time.sleep(2) + time.sleep(1) except Exception as e: self.log(f"登录等待超时或失败: {e}") return @@ -124,7 +124,7 @@ class SCBankCollector: self.log(f"跳转至订单管理页面: {self.target_url}") self.page.goto(self.target_url) self.page.wait_for_load_state("domcontentloaded") - time.sleep(3) + time.sleep(0.5) # 3. 筛选状态 self._filter_status() @@ -153,7 +153,7 @@ class SCBankCollector: self.browser.close() def _filter_status(self): - self.log("筛选: 订单类型 -> 待发货") + self.log("正在点击“待发货”标签页") try: # 定位 Tab tab_selector = ".el-tabs__item:has-text('待发货')" @@ -162,19 +162,10 @@ class SCBankCollector: if tab.count() > 0: if "is-active" not in tab.get_attribute("class"): tab.click() - self.log(" -> 点击“待发货”Tab") + self.log("已点击“待发货”标签页") time.sleep(1) else: - self.log(" -> 已处于“待发货”Tab") - - # 点击查询 - 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] 未找到“查询”按钮") + self.log("“待发货”标签页已经是选中状态") else: self.log(" [WARN] 未找到“待发货”Tab") except Exception as e: diff --git a/scbank_processor.py b/scbank_processor.py index ff1a089..d506f99 100644 --- a/scbank_processor.py +++ b/scbank_processor.py @@ -150,11 +150,13 @@ class SCBankProcessor: results.append({ "处理状态": "成功" if success else "失败", "失败原因": "" if success else msg, - "商城订单号": order_no, + "下单时间": order_time, + "订单编号": order_no, + "下单用户手机号码": detail.get("orderMobile"), + "商户名称": detail.get("exMerchant"), + "订单金额": detail.get("orderAmt"), "商品名称": goods_name, "内部商品ID": internal_pid, - "订单金额": detail.get("orderAmt"), - "下单时间": order_time }) # 5. 导出 Excel