如何抓取Steam统计页中同class名下的两组玩家数据?
Steam热门游戏玩家数据抓取问题解决
问题说明
需要抓取Steam平台热门游戏的当前玩家数和今日峰值玩家数,目标页面的表格中这两组数据对应的HTML元素使用了相同的class名currentServers。现有代码中使用find()方法仅能获取第一个数值(当前玩家数),无法提取第二个数值(今日峰值)。
页面单条游戏数据的HTML结构示例:
<tr class="player_count_row" style=""> <td align="right"> <span class="currentServers">403,791</span> </td> <td align="right"> <span class="currentServers">882,486</span> </td> <td width="20"> </td> <td> <a class="gameLink" onmouseover="GameHover( this, event, 'global_hover' {"type":"app","id":730,"public":1,"v6":1} );" onmouseout="HideGameHover( this, event, 'global_hover' )" href="https://store.steampowered.com/app/730/CounterStrike_Global_Offensive/">Counter-Strike: Global Offensive</a> </td> </tr>
现有问题代码:
import requests from bs4 import BeautifulSoup url = 'https://store.steampowered.com/stats/' page = requests.get(url) soup = BeautifulSoup(page.content, "html.parser") results = soup.find(id="detailStats") row = results.find_all('tr', class_='player_count_row') for data in row: player = data.find('span', class_='currentServers') name = data.find('a', class_='gameLink') print(player.text) print(name.text) print()
解决方法
find()方法只会返回第一个匹配到的元素,而find_all()会返回所有匹配元素的列表。只需将获取玩家数据的代码改为find_all(),再从列表中分别提取第一个(当前玩家数)和第二个(今日峰值)元素的文本内容即可。
修改后的完整代码:
import requests from bs4 import BeautifulSoup url = 'https://store.steampowered.com/stats/' page = requests.get(url) soup = BeautifulSoup(page.content, "html.parser") results = soup.find(id="detailStats") rows = results.find_all('tr', class_='player_count_row') for data in rows: # 获取所有class为currentServers的span元素,返回列表 player_stats = data.find_all('span', class_='currentServers') game_name = data.find('a', class_='gameLink') # 提取当前玩家数和今日峰值 current_players = player_stats[0].text peak_today = player_stats[1].text print(f"游戏名称:{game_name.text}") print(f"当前玩家数:{current_players}") print(f"今日峰值玩家数:{peak_today}") print("-" * 30)
代码说明
- 使用
find_all('span', class_='currentServers')获取当前行内所有的玩家数据元素,得到一个包含两个元素的列表。 - 通过索引
[0]和[1]分别提取当前玩家数和今日峰值的文本内容。 - 优化了输出格式,让数据展示更清晰。
内容的提问来源于stack exchange,提问作者Xiaolong Guo
相关产品推荐
相关产品推荐

