You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用BeautifulSoup提取日期及后续两个data_rec_v值?

解决方案

要实现你的需求,可通过以下步骤用BeautifulSoup处理HTML:

  1. 定位日期单元格:找到每个<tr>中第一个class为date_rec的<td>,提取其中的日期文本。
  2. 提取后续两个单元格的数据:从日期单元格开始,获取紧接着的两个date_rec类<td>,再从每个内部的inside_table中提取data_rec_v类<td>的文本。

代码示例

from bs4 import BeautifulSoup

# 假设你的HTML内容存储在html变量中
html = """
<tr><td class='date_rec'>2/27/2023</td>
<td class='date_rec'><table class='inside_table'><tr><td class='data_rec_v'>0.03</td><td class='data_rec_f'> </td></tr></table></td>
<td class='date_rec'><table class='inside_table'><tr><td class='data_rec_v'>0.43</td><td class='data_rec_f'> </td></tr></table></td>
<td class='date_rec'><table class='inside_table'><tr><td class='data_rec_v'>143</td><td class='data_rec_f'> </td></tr></table></td>
<td class='date_rec'><table class='inside_table'><tr><td class='data_rec_v'>7.4</td><td class='data_rec_f'> </td></tr></table></td>
<td class='date_rec'><table class='inside_table'><tr><td class='data_rec_v'>49.1</td><td class='data_rec_f'> </td></tr></table></td>
<td class='date_rec'><table class='inside_table'><tr><td class='data_rec_v'>35.8</td><td class='data_rec_f'> </td></tr></table></td>
<td class='date_rec'><table class='inside_table'><tr><td class='data_rec_v'>41.2</td><td class='data_rec_f'>Y</td></tr></table></td>
<td class='date_rec'><table class='inside_table'><tr><td class='data_rec_v'>93</td><td class='data_rec_f'> </td></tr></table></td>
<td class='date_rec'><table class='inside_table'><tr><td class='data_rec_v'>65</td><td class='data_rec_f'> </td></tr></table></td>
<td class='date_rec'><table class='inside_table'><tr><td class='data_rec_v'>84</td><td class='data_rec_f'>Y</td></tr></table></td>
<td class='date_rec'><table class='inside_table'><tr><td class='data_rec_v'>36.9</td><td class='data_rec_f'>Y</td></tr></table></td>
<td class='date_rec'><table class='inside_table'><tr><td class='data_rec_v'>7.1</td><td class='data_rec_f'> </td></tr></table></td>
<td class='date_rec'><table class='inside_table'><tr><td class='data_rec_v'>170.2</td><td class='data_rec_f'> </td></tr></table></td>
<td class='date_rec'><table class='inside_table'><tr><td class='data_rec_v'>44.5</td><td class='data_rec_f'>Y</td></tr></table></td>
</tr>
"""

soup = BeautifulSoup(html, 'html.parser')

# 遍历所有行
for tr in soup.find_all('tr'):
    # 获取当前行中所有class为date_rec的td
    date_rec_tds = tr.find_all('td', class_='date_rec')
    if not date_rec_tds:
        continue
    
    # 提取日期(第一个date_rec td的文本)
    date = date_rec_tds[0].get_text(strip=True)
    # 提取接下来两个td中的data_rec_v值
    values = []
    for td in date_rec_tds[1:3]:  # 取第2、3个date_rec td
        data_v = td.find('td', class_='data_rec_v').get_text(strip=True)
        values.append(data_v)
    
    # 组合结果
    result = [date] + values
    print(result)  # 输出: ['2/27/2023', '0.03', '0.43']

关键说明

  • find_all('td', class_='date_rec'):一次性获取当前行中所有date_rec类的单元格,方便后续通过索引快速定位目标元素。
  • date_rec_tds[1:3]:通过切片直接获取日期单元格之后的两个目标单元格,避免逐个定位的繁琐。
  • get_text(strip=True):提取文本时自动去除多余空格,保证结果整洁。

内容的提问来源于stack exchange,提问作者dwburger

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 07:07:17