You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何通过Waxpeer API筛选日销量低于1的CSGO商品?

解决方案:筛选日销量低于1的Waxpeer商品

首先,你的核心需求是筛选出日均销量低于1的商品,结合你提供的代码和API返回的count字段,我会给出两种简单的实现方式,同时顺便修正代码里的一些小问题~

方法1:爬取单个商品时直接筛选(推荐,减少内存占用)

在你计算完avgn(日均销量)之后,添加一个判断条件:只有当avgn < 1时,才将该商品的数据加入dfs列表。这样可以避免存储不需要的商品数据,节省内存。

修改后的核心代码片段如下:

for names in namelist:
    headers = {'content-type': 'application/json;charset=UTF-8'}
    data = {"name": names}
    r = requests.post('https://waxpeer.com/api/get-sales-history', headers=headers, json=data)
    history = r.json()
    
    # 处理空数据情况,避免计算时报错
    if not history.get('data'):
        print(f"商品 {names} 无销售数据,跳过")
        continue
    
    count = [i['count'] for i in history['data']]
    AveragePrice = numpy.mean([i['avg'] for i in history['data']])
    counter = [list(map(int, x)) for x in count]
    avgn = numpy.mean(counter)
    
    # 关键筛选条件:只保留日均销量<1的商品
    if avgn < 1:
        # 修正原代码的namer覆盖问题,用当前循环的names作为商品名
        itemois = pd.DataFrame({
            'Names': [names],
            'Average Sales Per Day': [avgn],
            'AveragePrice': [AveragePrice]
        })
        dfs.append(itemois)

方法2:在最终DataFrame中批量筛选

如果你已经爬取了所有商品数据,也可以在最后通过Pandas的条件过滤来快速筛选:

# 合并所有数据后添加筛选逻辑
itemois = pd.concat(dfs, ignore_index=True)
# 筛选日均销量低于1的商品
low_sales_items = itemois[itemois['Average Sales Per Day'] < 1]
print(low_sales_items)
low_sales_items.to_excel('waxpeer_low_sales.xlsx')

顺便修正代码里的几个小问题

  1. namer变量覆盖问题:原代码中namer是在while循环里赋值,但后续创建DataFrame时仍用namer,会导致所有商品的名称都被替换成最后一个爬取的商品名,要改成用循环里的names
  2. while循环逻辑错误:原代码把offset +=50放在了for循环外面,会导致while循环只执行一次就终止,应该把偏移量递增移到while循环内部,同时通过判断返回的商品列表是否为空来终止循环(比硬编码offset>10000更可靠):
while not at_end:
    response = requests.get(URL.format(offset=offset)).json()
    items = response.get("items", [])
    if not items:  # 没有更多商品时终止循环
        at_end = True
        break
    for data in items:
        namer = data["name"]
        listo.append(namer)
    offset += 50
    print(f"已获取 {offset} 条商品数据")

这样你的代码不仅能精准筛选低销量商品,还能更稳定地爬取全量数据~

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

火山引擎 最新活动