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

使用Python Beautiful Soup爬取BoardGameGeek如何获取桌游详情页唯一ID

唯一ID的定义

这个数字是BGG平台为每款桌游分配的内部唯一标识,通常称为BGGID。你拼接错误ID仍返回200状态码的原因是,平台做了兜底路由逻辑:只要URL路径格式符合/boardgame/[数字]/[任意字符]的规则,不管对应ID的桌游是否存在,都会返回200状态码,加载的是搜索结果页、不存在提示页或者自动重定向到相似内容页,所以你靠状态码判断URL是否有效的逻辑完全不成立。
另外你当前随机生成ID拼接URL的逻辑本身就有问题:就算你蒙对了正确ID,后面拼接的name[0]如果和官方URL里的名称后缀拼写、格式不一致,同样无法进入正确的详情页。

获取对应桌游ID的方法

你不需要随机生成ID,你正在爬的桌游列表页本身就自带所有桌游的完整详情页链接:

  • 解析列表页中每个桌游条目对应的<a>标签的href属性,属性值本身就是类似/boardgame/174430/gloomhaven的相对路径
  • 对这个路径字符串按/分割,取索引为2的分段,就能直接拿到对应桌游的准确BGGID,或者直接用这个相对路径拼接域名得到完整的详情页URL,完全不需要自行构造。

示例解析逻辑:

# 假设你拿到的a标签href属性值为 href_str
href_parts = href_str.split('/')
bgg_id = href_parts[2]
# 直接生成正确的详情页URL
correct_url = f"https://boardgamegeek.com{href_str}"

获取玩家人数的替代方案

  1. 使用官方API获取结构化数据
    BGG提供公开的XML API 2接口,你只需要传入拿到的BGGID,就能直接拿到包含玩家人数在内的全量结构化桌游数据,返回结果中直接包含minplayers(最少玩家数)、maxplayers(最多玩家数)字段,不需要解析HTML页面,效率更高也更稳定。
  2. 直接爬取详情页解析
    如果不想调用API,就用从列表页拿到的正确详情页URL挨个发起请求,解析详情页中玩家人数的展示区块即可,不需要自己构造URL。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 06:27:03