Back to skills
extension
Category: OtherNo API key required

电商商品第三方平台价格比对

京东商品比价Excel处理工具。自动从京东SKU页面采集累计评价数、价格数据,填充Excel表格的R(链接)、S(店铺)、T(评价)、L(京东价)、M(到手价)、O(差价)列,支持多规格价格换算。触发场景:用户提供包含京东链接的Excel商品表,需要更新价格/评价数据;或提到"京东比价"、"价格核实"、"多规格换算"、"新品定价"等关键词。

personAuthor: user_7a83e8cdhubcommunity

京东商品比价Excel处理

快速从京东采集商品数据,自动填充和计算Excel表格。

快速开始

最常见的用法

  1. 用户提供Excel文件 + 京东链接列表
  2. 我读取Excel,提取SKU ID
  3. 逐个访问京东页面采集数据
  4. 填充R/S/T/L/M/O列,计算差价
  5. 保存文件

核心代码

from openpyxl import load_workbook

# 读取
wb = load_workbook('商品表.xlsx')
ws = wb.active

# 更新单元格
ws['T4'] = '100万+'  # 累计评价
ws['L4'] = 17.90     # 京东价
ws['M4'] = 14.90     # 到手价
ws['O4'] = round(14.90 - 17.90, 2)  # 差价

# 保存
wb.save('商品表.xlsx')

工作流程

第一步:读取Excel,建立商品清单

from openpyxl import load_workbook

wb = load_workbook('文件名.xlsx')
ws = wb.active

# 提取所有SKU
skus = {}
for i in range(4, 52):  # 从第4行开始
    r = ws[f'R{i}'].value
    if r and 'item.jd.com/' in str(r):
        sku = str(r).split('item.jd.com/')[1].split('.html')[0]
        skus[sku] = i

关键列说明: | 列 | 内容 | 来源 | |----|------|------| | R | 京东链接 | 用户提供 | | G | 商品规格 | 用户提供 | | S | 店铺类型 | 京东页面 | | T | 累计评价数 | 京东页面 | | L | 京东价/划线价 | 京东页面 | | M | 到手价 | 京东页面 | | O | 差价 = M - L | 自动计算 |

第二步:采集京东SKU数据

访问 https://item.jd.com/{SKU_ID}.html 采集三个关键数据:

| 数据 | 说明 | 格式 | |------|------|------| | 累计评价 | 页面"累计评价"数值 | 100万+20万+2000+ | | 京东价 | SKU默认规格的划线价 | 17.90 | | 到手价 | 优惠后的实际价格 | 14.90 |

采集方式优先级

  1. web_fetch 抓取页面HTML
  2. browser 打开页面截图
  3. 如均失败,告知用户需手动核实

关键提示

  • ⚠️ 必须用"累计评价",不是"评价"
  • 同一SKU多行时,T列应相同
  • 价格保留2位小数

第三步:更新T列(累计评价数)

# 统一格式:万+
ws['T4'] = '100万+'  # ✅ 正确
ws['T5'] = '20万+'   # ✅ 正确
ws['T6'] = '2000+'   # ✅ 正确
# ws['T7'] = '100W+'  # ❌ 错误,禁止用W+

第四步:多规格价格换算

只在规格不匹配时使用。公式:

换算价格 = (京东SKU价格 ÷ SKU规格g数) × 表格规格g数

实例

  • 京东SKU:125g×3瓶 = 32.06元
  • 表格规格:99g×3瓶
  • 计算:(32.06 ÷ 3 ÷ 125) × 99 × 3 = 25.39元
# 单价 = 32.06 / 3 / 125 = 0.0856元/g
# 表格价 = 0.0856 * 99 * 3 = 25.39元
new_price = round((32.06 / 3 / 125) * 99 * 3, 2)

换算要点

  • L列和M列都需要换算
  • 必须基于同一SKU的不同规格
  • 不能跨SKU换算

第五步:计算O列(差价)

# 逐行计算差价 = 到手价 - 京东价
for i in range(4, 52):
    l_val = ws[f'L{i}'].value
    m_val = ws[f'M{i}'].value
    
    if l_val and m_val:
        try:
            l_num = float(str(l_val).replace(',', ''))
            m_num = float(str(m_val).replace(',', ''))
            ws[f'O{i}'] = round(m_num - l_num, 2)
        except:
            pass

第六步:数据完整性检查

保存前验证:

# 检查关键列是否填写完整
for i in range(4, 52):
    if not all([ws[f'{col}{i}'].value for col in ['R','S','T','L','M']]):
        print(f"行{i}缺少数据")
    
    # 检查O列是否计算
    if ws[f'O{i}'].value is None:
        print(f"行{i}差价未计算")

第七步:保存文件

wb.save('商品表.xlsx')
print("✅ 文件已保存")

注意事项

  1. 累计评价 vs 评价:必须使用"累计评价",而非"评价"数,两者差异很大
  2. 价格来源:优先使用京东自营/旗舰店价格
  3. 多规格换算:必须基于同一SKU的不同规格换算,不能跨SKU换算
  4. 数据一致性:同一SKU链接对应多行时,T列(累计评价)应相同
  5. 保存前验证:确认O列已全部计算,无空值
  6. 编码安全:使用openpyxl读写,避免编码问题

常见问题

Q1: 如何区分"评价"和"累计评价"?

  • 评价:最近一段时间的评价数(会变化)
  • 累计评价:商品上架以来的总评价数(只增不减)
  • 京东页面通常在商品详情下方显示"累计评价"

Q2: 多个规格的商品如何处理?

同一SKU有多个规格时:

  • 所有行使用同一个R列链接
  • 所有行的T列(累计评价)相同
  • L/M列按各自规格换算

Q3: 价格换算出错怎么办?

检查:

  1. SKU规格是否正确(如125g vs 100g)
  2. 是否混淆了单位(g vs ml)
  3. 是否包含了瓶数/包数(如3瓶)

Q4: 京东页面无法访问怎么办?

  • 检查网络连接
  • 尝试用浏览器手动访问确认链接有效
  • 如持续失败,告知用户需手动填写

工作示例

输入:用户提供Excel + 3个京东链接

R4: https://item.jd.com/100046323779.html
R5: https://item.jd.com/100141667624.html
R6: https://item.jd.com/100134415410.html

输出:自动填充

行4: T=100万+, L=17.90, M=14.90, O=-3.00
行5: T=100万+, L=36.90, M=32.06, O=-4.84
行6: T=20万+, L=22.90, M=18.76, O=-4.14