Python如何使用BeautifulSoup提取a标签href对应的球员姓名文本
实现方法
你使用的BeautifulSoup库中,标签对象的.text属性可以直接获取标签包裹的文本内容,配合简单的链接规则筛选,就能批量提取所有符合要求的球员姓名,避免误取页面其他无关链接的文本内容。
适配原有代码的修改方案
如果你不想调整现有代码结构,直接基于已生成的tags_initial变量提取,可使用以下写法:
player_names = [] for tag_list in tags_initial: for a_tag in tag_list: # 增加规则过滤非球员的a标签,只保留符合球员链接格式的内容 href = a_tag.get('href', '') if href.startswith('/players/') and href.endswith('.html'): player_names.append(a_tag.text) # 可直接打印查看提取到的姓名列表 print(player_names)
优化后的完整代码
如果要提升运行效率、减少不必要的内存占用,建议用迭代的方式处理页面,无需把所有页面的标签都存在内存中:
import string import urllib.request from bs4 import BeautifulSoup url = 'https://www.basketball-reference.com/players/' initial = list(string.ascii_lowercase) initial_url = [url + i for i in initial] player_names = [] for page_url in initial_url: html = urllib.request.urlopen(page_url).read() soup = BeautifulSoup(html, 'html.parser') # 直接筛选符合球员链接规则的a标签 for a_tag in soup.find_all('a', href=lambda x: x and x.startswith('/players/') and x.endswith('.html')): player_names.append(a_tag.text)
内容的提问来源于stack exchange,提问作者bballcoder
相关产品推荐
相关产品推荐

