Ecommerce Listing

从电商平台页面提取带筛选条件的商品列表,支持多页翻页。

已扫描
适合谁
电商从业者、市场研究人员
不适合谁
需要登录或私有数据访问的用户、无网络环境的离线用户
国内可用性
需网络配置。可能需要网络配置或第三方服务可访问。
安装难度
新手友好(★☆☆)。基于终端操作、依赖、API Key 和本地环境要求的初步判断。

安装与下载

openclaw skills install @browseract-cli/ecommerce-listing-skill

Skill 说明

命令、参数、文件名以原文为准

电商 — 产品列表

类别/搜索页面 URL 或关键词 + 筛选条件 → 分页产品列表(URL、名称、价格、图片、评分)

语言

所有流程输出给用户的内容(进度更新、通知等)均遵循用户的语言设置。

目标

从任意电商平台的类别页、搜索结果页或关键词搜索页中提取结构化的产品列表,支持价格、品牌、评分等筛选条件,并实现多页分页。

前置条件

  • 目标浏览器已打开且连接正常
  • 公开列表页无需登录即可访问

执行前检查

1. 工具就绪性

若当前会话中已确认 browser-act 可用 → 跳过此步骤。

通过 Skill 工具调用 browser-act 加载使用。若出现安装或配置问题,请按其指引解决后重试。

能力组件

本技能的操作边界 = 用户在浏览器中可手动完成的操作。仅读取页面上已显示的数据。JavaScript 代码封装在 scripts/ 目录下的 Python 文件中,通过 eval "$(python scripts/xxx.py {params})" 调用。执行使用 bash 工具。

DOM:从当前页面提取产品列表

先导航至列表或搜索页面,然后执行:

eval "$(python scripts/extract-listing.py --max-results 20)"

参数:

  • --max-results:每页返回的最大项目数,默认为 20

输出示例:

{
  "count": 20,
  "items": [
    {
      "url": "https://www.amazon.com/dp/B09WNK39JN",
      "name": "Amazon Echo Pop",
      "price": 39.99,
      "currency": "USD",
      "image": "https://m.media-amazon.com/images/I/...jpg",
      "rating": 4.7,
      "review_count": 103789,
      "asin": "B09WNK39JN"
    }
  ]
}

DOM:获取下一页 URL

提取完一页数据后,获取下一页的导航链接:

eval "$(python scripts/extract-listing-next-page.py)"

输出示例:

{"next_url": "https://www.amazon.com/s?k=headphones&page=2", "has_next": true, "method": "amazon"}

has_next 为 false 时,表示分页结束。

组合操作:关键词搜索 + 筛选条件 → 产品列表

步骤 1 — 构建带筛选条件的搜索 URL:

根据目标网站和所需筛选条件,使用以下模式构造 URL,然后导航:

**亚马逊(amazon.com):**

https://www.amazon.com/s?k={keyword_urlencoded}&s={sort}&rh={filter_params}
  • 排序(s):price-asc-rank | price-desc-rank | review-rank | date-desc-rank(不填则默认为相关性排序)
  • 价格筛选:将 p_36:{min_cents}-{max_cents} 添加到 rh 中(美元 × 100,例如 $50–$200 → p_36:5000-20000
  • 评分筛选:添加 avg_customer_review:four-and-above | three-and-above | two-and-aboverh
  • 有货筛选:添加 p_n_availability:1248801011rh
  • 多个 rh 值:用逗号分隔(如 rh=p_36:5000-20000,avg_customer_review:four-and-above

**eBay(ebay.com):**

https://www.ebay.com/sch/i.html?_nkw={keyword_urlencoded}&_udlo={min_price}&_udhi={max_price}&_sop={sort_num}
  • 排序:12=最佳匹配 | 15=低价优先 | 16=高价优先 | 24=新上架

**沃尔玛(walmart.com):**

https://www.walmart.com/search?q={keyword_urlencoded}&min_price={min}&max_price={max}&sort={sort}
  • 排序:best_match | price_low | price_high | rating_high

**Google Shopping(跨站,无 --site):**

https://www.google.com/search?tbm=shop&q={keyword_urlencoded}&tbs=p_ord:{sort}
  • 排序:rv=相关性 | pd=价格升序 | prd=价格降序

**任意站点(指定 --site):**

https://{site}/search?q={keyword_urlencoded}

步骤 2 — 导航并提取:

  1. navigate {constructed_url}wait stable
  2. eval "$(python scripts/extract-listing.py --max-results {n})"

步骤 3 — 分页处理(重复直至完成):

  1. eval "$(python scripts/extract-listing-next-page.py)"
  2. has_next 为 true:navigate {next_url}wait stable → 重新运行 extract-listing.py
  3. has_next 为 false:停止

分页机制

URL 分页extract-listing-next-page.py 检测 rel=next 链接、平台特定的分页控件以及 URL 中的页码参数。返回可用于导航的 next_url

DOM 分页:针对具有“加载更多”按钮的站点(部分 Shopify 主题):

  1. 使用 state 查找“加载更多”或“显示更多”按钮
  2. click <index>wait stable → 重新运行 extract-listing.py
  3. 终止条件:按钮不再存在,或项目数量不再增加

成功标准

result.count >= 1 AND items[0].url != null

已知限制

  • 亚马逊:在新会话中直接导航可能触发反机器人检测 —— 建议先从 https://www.amazon.com 进入
  • eBay 列表页可能需要先从 https://www.ebay.com 进入
  • Google Shopping 结果页面结构复杂,可能存在提取精度下降的情况;当指定 --site 时,建议优先使用目标站点的直接搜索
  • 筛选参数为站点特有;不支持的参数会被部分站点静默忽略
  • Shopify 主题差异较大;若通用 DOM 策略遗漏商品,请检查页面源码中是否存在 JSON-LD ItemList 或 Product 数组

执行效率

  • 批量编排:在同一会话内串行处理各页;页面跳转间添加 1–2 秒延迟
  • 测试先行:批量执行前先以单页测试验证
  • 错误恢复:记录已成功处理的页码;失败后可从最后一个成功页继续

使用说明

路径:{working-directory}/browser-act-skill-forge-memories/ecommerce-scraper-ecommerce-listing.memory.md

执行前:若该文件存在,请先读取内容 —— 它记录了以往执行中遇到的异常情况;可根据历史经验调整策略执行顺序。

执行后:若遇到意外情况(策略失效、页面改版、反爬机制升级、发现更优路径),请追加一行记录:

{YYYY-MM-DD}: {发生的情况} → {结论}

BC
@browseract-cli

已收录 3 个 Skill

相关推荐