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

如何使用BeautifulSoup提取表格数据并保存为CSV文件

解决方案:提取HTML表格数据并保存为CSV

我来帮你搞定这个问题!你现在的核心问题是把三个字段分开循环提取,导致没法把同一行的公司名、分类、地址对应起来,而且写入CSV的代码也有语法错误。咱们一步步修正:

原代码的问题分析

  • 三个独立的for循环会分别遍历所有公司名、所有分类、所有地址,这样你没法把某一家公司的三个信息对应起来
  • 写入CSV时,你写的是字符串'company_name.string'而不是实际的变量值,而且最后一行代码少了闭合的括号
  • 文件打开的部分有点冗余,os.path.join生成了路径但没用到,直接用open("text.txt")可能会有路径问题

修正后的完整代码

import os
import csv
from bs4 import BeautifulSoup

# 定义文件路径,用os.path.join确保跨平台兼容
path = "C:/Users/trond/OneDrive/Dokumente/01 Tech/01 Python"
file_name = os.path.join(path, "text.txt")

# 打开HTML文件并解析,用with语句自动管理文件关闭
with open(file_name, encoding="utf-8") as my_file:
    plain_text = my_file.read()

soup = BeautifulSoup(plain_text, "html.parser")

# 打开CSV文件准备写入,指定utf-8编码避免德语字符乱码,newline=''避免空行
with open('outputFile.csv', 'w', newline='', encoding='utf-8') as csv_file:
    csv_writer = csv.writer(csv_file)
    # 写入CSV表头
    csv_writer.writerow(['Company Name', 'Category', 'Address'])

    # 定位表格中所有的公司数据行
    company_rows = soup.find_all('tr', class_='wpgmaps_mlist_row')
    
    for row in company_rows:
        # 从当前行提取对应字段的文本内容,strip=True去除多余空格和换行
        company_name = row.find('td', class_='wpgmza_table_title all').get_text(strip=True)
        company_category = row.find('td', class_='wpgmza_table_category').get_text(strip=True)
        company_address = row.find('td', class_='wpgmza_table_address').get_text(strip=True)
        
        # 打印验证数据(可选)
        print(f"[{company_name}] - {company_category} | {company_address}")
        
        # 将当前公司的三个字段写入CSV一行
        csv_writer.writerow([company_name, company_category, company_address])

关键改进说明

  1. 按行提取数据:先找到每个公司对应的<tr>行,再在每行内提取三个字段,确保数据一一对应
  2. 安全的文件操作:使用with语句打开文件,自动处理文件关闭,避免资源泄漏
  3. 文本处理优化:用get_text(strip=True)替代.string,能更好地处理可能存在的多余空格,同时.string在某些情况下会返回None,get_text()更可靠
  4. 编码与格式处理:指定encoding='utf-8'保证德语特殊字符正常显示,newline=''避免CSV文件出现多余空行
  5. 语法错误修复:修正了原代码中写入CSV时的字符串错误和括号缺失问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 07:21:11