如何获取带有variable-active类的td标签的同级兄弟td内容?
问题解决:获取带有
variable-active类的TD标签的同级TD内容 原始HTML片段
<tr> <td data-bind="text:name, css: isActive() ? 'variable-active': 'variable-inactive'" class="variable-active">Vehicle</td> <td data-bind="text:value">Ford</td> </tr> <tr> <td data-bind="text:name, css: isActive() ? 'variable-active': 'variable-inactive'" class="variable-inactive">Model</td> <td data-bind="text:value">Focus</td> </tr>
需求说明
需要获取所有带有variable-active类的<td>标签,并获取其下一个同级<td>标签的内容,预期输出:
"Vehicle - Ford"
原代码问题
原代码中tag.findNextSibling(class_="variable-active")的逻辑错误:该方法是寻找当前标签的同级兄弟中带有variable-active类的标签,但我们需要的是带有variable-active类的TD标签的下一个同级TD,而非同级中带该类的标签。
正确实现代码
from bs4 import BeautifulSoup with open("html.html", "r") as f: doc = BeautifulSoup(f, "html.parser") # 定位所有带有variable-active类的td标签 active_tds = doc.find_all("td", class_="variable-active") for td in active_tds: # 获取当前td的下一个同级td标签 next_td = td.find_next_sibling("td") # 拼接并输出结果 if next_td: result = f'"{td.get_text(strip=True)} - {next_td.get_text(strip=True)}"' print(result)
代码解释
doc.find_all("td", class_="variable-active"):直接定位所有目标TD标签,无需先筛选TR再查找,逻辑更简洁。td.find_next_sibling("td"):针对每个目标TD,精准获取其下一个同级TD标签,这才是我们需要的内容载体。get_text(strip=True):提取标签文本并自动去除首尾空白,避免多余换行或空格影响输出格式。
内容的提问来源于stack exchange,提问作者Federico Rey
相关产品推荐
相关产品推荐

