如何用BeautifulSoup获取HTML表格中td元素的data-odd属性数值?
获取HTML元素中data-odd属性的数值
你用.text拿不到数值是因为这些值不在元素的文本内容里,而是存储在data-odd这个自定义HTML属性中,需要通过属性获取的方式提取。
针对你提供的两种HTML结构(td自身带data-odd、td内部span带data-odd),可以用以下代码处理:
from bs4 import BeautifulSoup # 你的HTML内容 html_content = ''' <td class="table-main__odds colored" data-oid="5lmp0xv464x0xf55p3"><span><span><span data-odd="3.03"></span></span></span></td> <td class="table-main__odds colored" data-oid="5lmp3xv464x0xf55p9"><span><span><span data-odd="1.21"></span></span></span></td> <td class="table-main__odds" data-odd="3.23" data-oid="5lmovxv464x0xf55p1"></td> ''' soup = BeautifulSoup(html_content, 'html.parser') # 定位所有目标td元素 td_elements = soup.find_all('td', class_='table-main__odds') for td in td_elements: # 优先获取td自身的data-odd属性 odd_num = td.get('data-odd') # 如果td没有该属性,就查找内部带data-odd的span if not odd_num: target_span = td.find('span', attrs={'data-odd': True}) if target_span: odd_num = target_span.get('data-odd') # 输出结果 print(odd_num)
关键说明:
- 使用
.get('属性名')获取属性值,比直接用td['data-odd']更安全,属性不存在时不会报错,返回None attrs={'data-odd': True}用于精准筛选带有data-odd属性的span元素- 先检查td自身属性再查找子元素,能覆盖你提供的两种结构场景
内容的提问来源于stack exchange,提问作者Dave85
相关产品推荐
相关产品推荐

