From 69c7ee5fd5466a5dcaec8c2d61860f9abb172935 Mon Sep 17 00:00:00 2001 From: admin9webs Date: Mon, 21 Sep 2026 08:49:56 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A6=99=E6=89=8B=E5=AF=BC=E5=85=A5=EF=BC=9A8?= =?UTF-8?q?=20=E6=AC=A1=E6=A0=BC=E5=BC=8F=E8=AF=95=E9=94=99=E5=85=A8?= =?UTF-8?q?=E8=AE=B0=E5=BD=95=EF=BC=88CSV=20=E4=B8=8D=E5=8F=97=E7=90=86/?= =?UTF-8?q?=E8=A6=81=E6=B1=82=20xls+=E4=BA=A7=E5=93=81=E4=B8=BB=E7=BC=96?= =?UTF-8?q?=E5=8F=B7=E8=A1=A8=E5=A4=B4/=E5=AE=98=E6=96=B9=E6=A8=A1?= =?UTF-8?q?=E6=9D=BF=E7=BC=BA=E8=AF=A5=E5=88=97=EF=BC=89=EF=BC=8C=E4=B8=8B?= =?UTF-8?q?=E4=B8=80=E6=AD=A5=E7=94=A8=20xlwt=20=E7=94=9F=E6=88=90=20xls?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 妙手建品/RECIPE.md | 27 +++++++++++++++++++++++++++ 妙手建品/ms_status.mjs | 13 +++++++++++++ 2 files changed, 40 insertions(+) create mode 100644 妙手建品/ms_status.mjs diff --git a/妙手建品/RECIPE.md b/妙手建品/RECIPE.md index 779ae4d..de78f2a 100644 --- a/妙手建品/RECIPE.md +++ b/妙手建品/RECIPE.md @@ -103,3 +103,30 @@ await c.send('DOM.setFileInputFiles', { files: ['/path/ms_import.csv'], nodeId } ### 生成脚本 `/home/admin9webs/miaoshou/dl/ms_import.csv`(47 行,已排除无水印图的 `601964534137`), 由 `tk_input.json` 生成:链接 = `https://detail.1688.com/offer/.html`。 + +## 导入格式的完整试错记录(第 2 轮,全部失败,附下一步) + +| # | 上传内容 | 结果 | +|---|---|---| +| 1 | `.txt` 一行一链接 | ❌ `…文件内容不是json格式` | +| 2 | `.json` URL 数组 | ❌ `…文件标题缺失` | +| 3 | `.json` 每项带 `title/url/链接地址` | ❌ 同上 | +| 4 | `.json` 根节点 `title/标题` + `links/data/list` | ❌ 同上 | +| 5 | `.csv`(模板 4 列,UTF-8 **带 BOM**) | 接受入列 → 解析失败:`未识别到:【产品主编号】表头` | +| 6 | `.csv`(补 `产品主编号` 列,带 BOM) | ❌ 同一句 | +| 7 | `.csv`(补 `产品主编号` 列,**无 BOM** UTF-8) | ❌ 同一句(**BOM 不是原因**) | +| 8 | **官方模板 `.xls` 原样上传** | 前端直接拒:`未匹配到数据,请检查模板是否正确`(空模板无数据行),**未产生导入任务** | + +### 结论 +- 解析器要的是**带数据的 `.xls`(或 `.xlsx`)**,且表头里必须有 **`产品主编号`**; +- **CSV 看起来不管用**(即使表头齐全、去掉 BOM,仍只报缺 `【产品主编号】`); +- 下载到的模板只有 4 列(`链接地址(必填)/产品标题/价格(RMB)/促销价(RMB)`), + **缺 `产品主编号`** → 服务端模板与解析器版本不一致(错误提示也写着「请下载最新模版」)。 + +### 下一步(就一件事) +用能写 Excel 的库生成 `.xls`/`.xlsx`(本机:`pip install --break-system-packages xlwt` 或 `openpyxl`), +表头 = `产品主编号, 链接地址(必填), 产品标题, 价格(RMB)`,47 行数据,再上传。 +若仍报缺表头,则说明**必须改用服务端最新模板**(可能要在页面上换一个平台/入口重新下载一次模板)。 + +### 当前队列状态 +已导入文件列表里有 3 条失败任务(`ms_import` / `ms_import2` / `ms_nobom`),可在页面上「删除文件」清掉。 diff --git a/妙手建品/ms_status.mjs b/妙手建品/ms_status.mjs new file mode 100644 index 0000000..b0d6a35 --- /dev/null +++ b/妙手建品/ms_status.mjs @@ -0,0 +1,13 @@ +import { listPages, wait } from '/home/admin9webs/shein建品/sh_lib.mjs'; +import { CDP, SAN as S } from '/tmp/cdp3.mjs'; +const t = (await listPages()).find(x=>/91miaoshou/i.test(x.url)); +const c = await CDP.connect(t.webSocketDebuggerUrl); +await c.send('Page.enable'); await c.send('Runtime.enable'); +await c.send('Page.navigate', { url: 'https://erp.91miaoshou.com/common_collect_box/index?fetchType=importCopy' }); +await wait(12000); +const o = await c.evalJS(`(()=>{const rows=[...document.querySelectorAll('tr')].filter(e=>e.offsetParent!==null) + .map(e=>(e.innerText||'').replace(/\\s+/g,' ').trim()).filter(t=>t&&!/文件名称/.test(t)&&/ms_import|解析|成功|失败/.test(t)).slice(0,4); + return JSON.stringify({rows});})()`); +console.log('导入列表:', S(String(o)).slice(0,600)); +try{ await c.shot('/tmp/ms_status.jpg'); console.log('shot ok'); }catch(e){} +process.exit(0);