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

如何用Python合并HTML格式油井完井文件并导出为Excel?

问题分析与解决思路

一、修复当前HTML合并代码的问题

你的代码主要存在两个核心问题,导致输出空的HTML结构:

1. 文件路径错误

os.listdir(data_folder)仅返回文件夹内的文件名,而非完整路径。直接用open(file, 'r')会在当前工作目录查找文件,根本找不到目标HTML文件,自然无法读取内容。

2. 编码兼容问题

Windows环境下下载的HTML文件可能带有非UTF-8编码,直接读取容易触发编码错误,导致内容读取失败。

修复后的完整代码

import os
from bs4 import BeautifulSoup

output_doc = BeautifulSoup()
output_doc.append(output_doc.new_tag("html"))
output_doc.html.append(output_doc.new_tag("body"))
data_folder = r'C:\Users\dtsar\OneDrive\Desktop\another well completion'

for file in os.listdir(data_folder):
    if not file.lower().endswith('.html'):
        continue

    # 拼接完整文件路径 + 指定编码避免读取失败
    full_file_path = os.path.join(data_folder, file)
    with open(full_file_path, 'r', encoding='utf-8', errors='ignore') as html_file:
        soup = BeautifulSoup(html_file.read(), "html.parser")
        # 确保body有内容再添加,避免空元素干扰
        if soup.body and soup.body.contents:
            output_doc.body.extend(soup.body.contents)

print(output_doc.prettify())

二、更高效的Excel合并方案(推荐)

你的最终目标是合并数据并导出Excel,手动拼接HTML再转格式的方式繁琐且容易出错。直接用pandas读取HTML中的表格数据,合并后导出是更简洁的方案:

1. 安装依赖

pip install pandas openpyxl

2. 实现代码

import os
import pandas as pd

data_folder = r'C:\Users\dtsar\OneDrive\Desktop\another well completion'
all_data = []

for file in os.listdir(data_folder):
    if not file.lower().endswith('.html'):
        continue
    
    full_path = os.path.join(data_folder, file)
    # 自动读取HTML中的所有表格,返回DataFrame列表
    table_list = pd.read_html(full_path, encoding='utf-8')
    # 假设每个文件只有一个目标表格,取第一个;若有多个,可通过索引/列名筛选
    if table_list:
        all_data.append(table_list[0])

# 合并所有表格数据
combined_data = pd.concat(all_data, ignore_index=True)
# 导出到Excel文件
combined_data.to_excel('合并油井完井数据.xlsx', index=False, engine='openpyxl')

如果HTML中存在多个表格,可通过table_list[1](索引值)或检查列名(如df.columns)来定位目标表格。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 04:15:37