如何使用BeautifulSoup4提取HTML tr标签id属性值存入列表
问题原因与修复方案
核心错误点
doc.find_all('tr')返回的是包含所有<tr>标签的列表集合,不是单个标签元素,不能直接对列表取['id']属性,必须遍历列表中的每一个<tr>元素单独提取属性。- 并非所有
<tr>标签都带有id属性,直接强制提取会抛出KeyError异常,需要先判断元素是否存在id属性再做提取。 - 如果执行后完全无输出也无报错,大概率是目标页面的表格内容是前端JavaScript动态渲染的,静态请求
requests.get()拿到的原始HTML里根本没有对应<tr>内容,所以find_all('tr')返回空列表,后续也没有输出。
修正后的静态提取代码(适用于静态渲染页面)
import requests from bs4 import BeautifulSoup url = "https://brawlify.com/stats/club/V8GVVR0R" result = requests.get(url).text doc = BeautifulSoup(result, "html.parser") tr_tags = doc.find_all('tr') id_list = [] for tr in tr_tags: # 先判断tr标签是否存在id属性 if tr.get('id'): id_list.append(tr['id']) print(id_list)
动态渲染页面解决方案
如果上述代码还是返回空列表,说明目标内容是JS动态加载的,可改用Selenium、Playwright等模拟浏览器执行的工具获取渲染后的页面内容再提取。
内容的提问来源于stack exchange,提问作者Zaid Hussain
相关产品推荐
相关产品推荐

