如何为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')
关键改动说明
player_nicknames作为独立的遍历对象,50个选手昵称直接追加到该列表即可,维护成本极低;- 通过
base_url.format(nickname)自动生成完整URL,避免手动输入URL时出现拼写错误; - 直接使用列表中的昵称赋值,比拆分URL更高效可靠;
- 移除了原代码中无用的
stammdatendf部分(该变量仅保留最后一位选手的数据,对批量处理无意义)。
内容的提问来源于stack exchange,提问作者quarantinho
相关产品推荐
相关产品推荐

