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

如何为Python网页爬虫构建动态URL数组批量爬取CS选手数据?

批量处理Liquipedia CSGO选手页面的解决方案

你现有代码可正常抓取单/少量选手页面,但需要处理50个固定格式https://liquipedia.net/counterstrike/{Nickname}的URL,希望通过独立对象存储并遍历,可按以下方式解决:

  • 统一管理昵称,自动生成URL
    所有URL前缀固定,仅末尾昵称不同,无需手动编写完整URL。先维护一个独立的昵称列表,再通过字符串拼接自动生成完整URL,既减少重复代码,也方便后续添加/修改50个昵称。

  • 复用原有遍历逻辑
    基于昵称列表生成URL后,遍历抓取的逻辑和你现有代码一致,无需大幅改动,仅调整URL生成方式即可。

修改后的完整代码

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/110.0.0.0 Safari/537.36'}

# 独立存储选手昵称,直接补充剩余47个即可
player_nicknames = ['S1mple', 'M0NESY', 'Dexter']
base_url = 'https://liquipedia.net/counterstrike/{}'

players = []
for nickname in player_nicknames:
    url = base_url.format(nickname)
    response = requests.get(url, headers=headers)
    soup = BeautifulSoup(response.text, 'html.parser')
    # 抓取选手信息
    stammdaten = dict((e.text, e.find_next_sibling('div').text) for e in soup.select('.infobox-description'))
    stammdaten['nickname'] = nickname  # 直接使用列表中的昵称,无需拆分URL
    players.append(stammdaten)

# 生成DataFrame并导出到Excel
playerdf = pd.DataFrame(players, columns=['nickname', 'Born:', 'Role:'])
print(playerdf)
playerdf.to_excel('csgo_players.xlsx')

关键改动说明

  1. player_nicknames作为独立的遍历对象,50个选手昵称直接追加到该列表即可,维护成本极低;
  2. 通过base_url.format(nickname)自动生成完整URL,避免手动输入URL时出现拼写错误;
  3. 直接使用列表中的昵称赋值,比拆分URL更高效可靠;
  4. 移除了原代码中无用的stammdatendf部分(该变量仅保留最后一位选手的数据,对批量处理无意义)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 09:24:59