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

如何用BeautifulSoup从Buff页面解析指定CSGO皮肤价格?

解决Buff CSGO商品页面解析问题

问题根源

直接通过requests.get()请求你提供的页面URL,得到的是静态HTML框架,页面上的商品数据是通过JavaScript动态加载的(AJAX请求),所以BeautifulSoup无法从静态源码中提取到商品信息。

正确方案:抓取动态数据接口

Buff的商品列表数据来自专门的API接口,我们可以直接请求这个接口获取JSON格式的商品数据,无需解析HTML。

代码示例

import requests

# 商品列表API接口,page_num控制页码,page_size控制每页数量
api_url = 'https://buff.163.com/api/market/goods?game=csgo&page_num=1&page_size=20&sort_by=price.desc&sort_type=default&tab=selling'
# 请求头,模拟浏览器访问,避免被拦截
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36'
}

# 发送请求获取JSON数据
response = requests.get(api_url, headers=headers)
data = response.json()

# 遍历商品列表,找到目标商品
target_item_name = 'StatTrak™ MAG-7 | Cobalt Core (Well-Worn)'
for item in data['data']['items']:
    if item['name'] == target_item_name:
        print(f"商品名称: {item['name']}")
        print(f"当前价格: {item['price']} 元")
        break
else:
    print("未找到目标商品")

代码说明

  • API接口参数:page_num是页码,tab=selling对应“出售”标签,game=csgo指定游戏为CSGO,其他参数可根据需求调整(比如sort_by控制排序方式)。
  • 请求头:必须带上User-Agent,否则Buff的服务器会拒绝请求。
  • 数据解析:接口返回的JSON中,data['items']是商品数组,每个元素包含商品名称、价格、链接等详细信息,直接根据name字段匹配目标商品即可。

原代码无效原因

你原代码中用soup.find_all('li')只能找到静态HTML里的<li>标签,而商品对应的<li>元素是页面加载完成后由JavaScript动态生成的,静态源码中不存在这些元素,所以无法提取到数据。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 06:46:02