Python网页爬虫修改需求:仅输出首位网球选手名称(VS2022)
解决Python爬虫仅输出首位网球选手名称的问题
原代码会遍历页面所有<h2>标签及其中的<a>标签,导致输出两位选手名称。要仅输出首位选手,可通过以下修改实现:
修改思路
- 不再遍历所有
<h2>标签,直接获取页面中第一个包含选手信息的<h2>元素 - 仅提取该
<h2>下的第一个<a>标签内容,而非遍历所有链接 - 输出后直接结束操作,避免处理后续元素
修改后的代码
import requests from bs4 import BeautifulSoup response = requests.get("https://www.betexplorer.com/tennis/atp-singles/basel/auger-aliassime-felix-bublik-alexander/U5HIueTc/") webpage = response.content soup = BeautifulSoup(webpage, "html.parser") # 获取第一个包含选手链接的h2标签 first_h2 = soup.find('h2') if first_h2: # 获取该h2下的第一个a标签 first_player = first_h2.find('a') if first_player: # 输出处理后的选手名称 print(first_player.text.replace(" ", "_"))
修改说明
- 将
soup.find_all('h2')改为soup.find('h2'):find()方法只会返回匹配到的第一个元素,而非所有元素 - 将遍历
<a>标签的逻辑改为直接调用find('a'):仅获取第一个选手链接 - 增加简单的判空逻辑,避免因页面结构变化导致的报错
内容的提问来源于stack exchange,提问作者NewGuy1
相关产品推荐
相关产品推荐

