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

如何用Beautiful Soup提取表格间隔元素并获取文本?解决AttributeError

解决网页表格提取第10个元素并导出CSV的问题

嘿,我来帮你搞定这个问题!你的代码里有两个关键问题导致了当前的错误,咱们一步步来修正:

问题分析

  1. 全局提取所有<td>:你在遍历每个<tr>的时候,用了soup.findAll('td')——这会把页面上所有表格单元格都取出来,而不是当前行里的单元格,这就是为什么输出所有td标签的原因。
  2. 列表调用.text属性:切片tds[2::10]得到的是一个td标签的列表,列表本身没有.text属性,你需要给列表里的每个单独td标签调用.text才能提取文本。

修正后的代码

prices = []
# 遍历表格的每一行<tr>
for tr in soup.findAll('tr'):
    # 仅提取当前行内的所有<td>单元格
    tds = tr.findAll('td')
    # 对当前行的td列表按规则切片,逐个提取文本(并去除前后空白)
    selected_texts = [td.text.strip() for td in tds[2::10]]
    # 只添加有内容的行,避免CSV里出现空行
    if selected_texts:
        prices.append(selected_texts)

# 将提取到的数据导出到CSV文件
import csv
with open('prices_output.csv', 'w', newline='', encoding='utf-8') as csv_file:
    writer = csv.writer(csv_file)
    writer.writerows(prices)

关键改动说明

  • 把soup.findAll('td')替换为tr.findAll('td'):确保每次只处理当前行的单元格,而不是整个页面的所有单元格。
  • 使用列表推导式处理切片结果:遍历切片后的每个td标签,调用.text.strip()提取并清理文本,得到纯文本列表。
  • 增加空内容判断:避免把没有符合条件单元格的空行写入CSV,让输出更整洁。
  • 补充CSV导出代码:直接实现你需要的导出功能,无需额外编写逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 09:51:58