You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Requests与BS4抓取亚马逊商品时如何提取销售排名数据

亚马逊商品销售排名提取实现

以下是直接可用的提取代码,适配亚马逊英国站的商品详情页结构:

核心提取逻辑

# 优先通过固定ID定位销售排名行
rank_row = soup.find('tr', {'id': 'SalesRank'})
if rank_row:
    rank_text = rank_row.find('td', class_='a-size-base').text.strip()
    # 过滤非数字字符,提取纯排名数值
    sales_rank = ''.join([c for c in rank_text if c.isdigit() or c == ',']).split(' ')[0]
else:
    # 兼容页面结构微调的降级匹配逻辑
    for tr in soup.select('#productDetails_detailBullets_sections1 tr'):
        if 'Best Sellers Rank' in tr.text:
            rank_text = tr.find('td', class_='a-size-base').text.strip()
            sales_rank = ''.join([c for c in rank_text if c.isdigit() or c == ',']).split(' ')[0]
            break
    else:
        sales_rank = '未获取到排名'

整合后完整可运行代码

import requests
from bs4 import BeautifulSoup
import pandas as pd

headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/93.0.4577.82 Safari/537.36"
}
url = 'https://www.amazon.co.uk/dp/B083PHB6XX'

r = requests.get(url, headers=headers)
soup = BeautifulSoup(r.content, 'lxml')

name = soup.find('span', {'id': 'productTitle'}).text.strip()
price = soup.find('span', {'id': 'priceblock_ourprice'}).text.strip()

# 提取销售排名
rank_row = soup.find('tr', {'id': 'SalesRank'})
if rank_row:
    rank_text = rank_row.find('td', class_='a-size-base').text.strip()
    sales_rank = ''.join([c for c in rank_text if c.isdigit() or c == ',']).split(' ')[0]
else:
    sales_rank = '未获取到排名'

print("商品名称:", name)
print("商品价格:", price)
print("销售排名:", sales_rank)

说明

  • 原始排名文本会附带分类信息,例如#106,505 in Home & Kitchen,通过字符过滤后仅保留数字与逗号,即可得到目标数值
  • 如果运行后返回未获取到排名,先检查请求返回内容是否为亚马逊验证码页面,更换User-Agent值即可解决

内容的提问来源于stack exchange,提问作者in_d

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 01:06:03