| name | collector-scraper |
| description | 从妙手ERP的Shopee采集箱提取商品完整数据(标题、描述、SKU、主图等)。触发条件:(1)商品已在Shopee采集箱需要提取数据 (2)执行TC-CS-001测试 (3)product-storer落库前需要商品数据 |
collector-scraper
从妙手ERP的Shopee采集箱爬取商品完整数据。提取:货源ID、标题、类目、品牌、SKU列表(含规格/价格/库存)、主图URL列表、详情图、描述。
核心文件
- 模块路径:
/home/ubuntu/.openclaw/skills/collector-scraper/scraper.py
- Cookie文件:
/home/ubuntu/.openclaw/skills/miaoshou-collector/miaoshou_cookies.json(共享)
- 临时目录:
/home/ubuntu/work/tmp/collector_scraper_test/
使用方法
cd /home/ubuntu/.openclaw/skills/collector-scraper
python scraper.py --list
python scraper.py --scrape 0
python scraper.py --scrape 1
或Python调用:
from scraper import CollectorScraper
scraper = CollectorScraper()
scraper.launch()
result = scraper.scrape(index=0)
scraper.close()
print(result)
提取数据字段
| 字段 | 说明 |
|---|
source_id | 货源ID(从1688链接提取) |
title | 商品标题 |
category | 类目 |
brand | 品牌(可能为None) |
main_image | 主图URL |
images | 所有主图URL列表 |
skus | SKU列表(3个:深棕色大号/小号/一套) |
description | 详情描述 |
物流 | weight (g), length_cm, width_cm, height_cm |
关键技术点
Vue单页应用点击
妙手ERP使用Vue,部分按钮需JS触发:
page.evaluate('''() => {
var btns = document.querySelectorAll("button");
for (var b of btns) {
if (b.innerText.trim() === "编辑") { b.click(); return; }
}
}()''')
虚拟表格
妙手ERP使用 jx-pro-virtual-table 虚拟表格,数据从输入框提取:
inputs = dialog.query_selector_all('input')
for inp in inputs:
ph = inp.get_attribute('placeholder') or ''
val = inp.input_value() or ''
SKU规格提取(JavaScript方式)
使用JavaScript直接提取SKU数据,精确匹配Element UI组件:
价格提取:
const priceInput = document.querySelector('.jx-pro-input.price-input input.el-input__inner');
库存提取(需去重):
const allInputs = document.querySelectorAll('.jx-pro-input input.el-input__inner');
SKU图片提取:
const imgBoxes = document.querySelectorAll('.el-image.img-box');
JavaScript字符串使用注意:
- 使用
r"""...""" 让Python传递原始字符串给JS
- 批量替换:
sed -i 's/evaluate("""/evaluate(r"""/g' file.py
前置条件
- miaoshou-collector 已完成采集
- 商品已在Shopee采集箱
- Cookie有效
数据依赖
- 输入: Shopee采集箱商品列表
- 输出: 完整商品数据结构
- 后续模块: product-storer 落库
故障排查
| 问题 | 解决方案 |
|---|
| 货源ID提取None | 从 href=".../offer/1027205078815.html" 正则提取 |
| SKU数量不准确 | 检查输入框逻辑,3个规格组合 |
| 物流信息为空 | 由local-1688-weight服务补充 |
| 编辑对话框未出现 | 检查Vue事件,尝试JS click |