在循环中使用Beautiful Soup批量获取英超球员页面URL的技术咨询
英超球员页面爬取脚本开发进度
我正在编写一段Python脚本,用来处理英超官网的球员页面数据,目前的开发情况如下:
核心目标
- 从本地电子表格中读取包含400+足球运动员姓名的列表
- 循环遍历每个姓名,通过Beautiful Soup在英超官网球员列表页中定位对应球员的个人页面链接(示例格式:
https://www.premierleague.com/players/4040/Benik-Afobe/overview) - 后续计划基于获取到的链接,进一步爬取球员的详细数据
当前脚本结构(未完成版)
import requests from bs4 import BeautifulSoup import pandas as pd # 读取电子表格中的球员姓名列表 player_names = pd.read_excel("players_list.xlsx")["PlayerName"].tolist() # 英超官网球员列表基础URL base_player_page = "https://www.premierleague.com/players" collected_links = [] for player_name in player_names: # 发送请求获取页面内容 response = requests.get(base_player_page) soup = BeautifulSoup(response.text, "html.parser") # 这里需要根据页面实际DOM结构优化匹配逻辑,示例为模糊姓名匹配 player_anchor = soup.find( "a", text=lambda text: text and player_name.lower() in text.lower() ) if player_anchor: # 拼接完整的球员个人页面链接 full_player_link = f"https://www.premierleague.com{player_anchor['href']}" collected_links.append(full_player_link) print(f"成功找到[{player_name}]的页面链接:{full_player_link}") else: print(f"未找到[{player_name}]的对应页面") # 后续处理模块(暂未实现,处于注释状态) # TODO: 遍历已收集的链接,爬取球员详细数据 # for link in collected_links: # # 此处添加详细数据提取逻辑 # pass
待优化/待完成事项
- 页面动态加载问题:目前用
requests直接获取的页面可能不包含全部球员数据,后续可能需要改用Selenium或者分析网站的API接口来获取完整内容 - 姓名匹配精度:需要处理姓名大小写、中间名、拼写变体等情况,避免误匹配或漏匹配
- 反爬策略:频繁请求可能触发网站的反爬机制,需要添加请求头、设置请求延时,必要时使用代理IP
内容的提问来源于stack exchange,提问作者Liam Gower
相关产品推荐
相关产品推荐

