讲师中心 微信公众号
AI工具推荐 视频效率加速

Python实现HTML结构化数据提取与自定义JSON转换教程

轻涛君_7355

轻涛君_7355

发布时间:2025-11-23 12:58:02

|

413人浏览过

|

来源于php中文网

原创

Python实现HTML结构化数据提取与自定义JSON转换教程

本教程旨在解决将html文件转换为特定、结构化json格式的需求,而非简单地复制html dom结构。文章将详细指导如何利用python的beautiful soup库高效解析html内容,通过自定义逻辑提取关键文本信息,并构建扁平化或层级化的数据模型,最终将其序列化为符合期望的json格式,从而实现从复杂html中精准获取并组织结构化数据。

1. 理解HTML到JSON转换的挑战

在处理HTML数据时,我们经常面临将其转换为更易于程序处理的JSON格式的需求。然而,直接使用一些库(如html_to_json)进行转换时,往往会得到一个镜像HTML DOM结构的JSON输出。这种输出包含了大量的HTML标签信息,并非我们期望的仅包含“键”和“值”的语义化数据。

问题示例: 原始HTML文件内容(简化示意):

<html>
<head><title>252</title></head>
<body>
    <div>
        <p><a><span><span><span>Performance Work Statement</span></span></span></a></p>
        <span><span><span><span>UNITED STATES NAVAL ACADEMY (USNA)</span></span></span></span>
    </div>
</body>
</html>

使用html_to_json库可能会得到类似以下结构的JSON,其中包含了HTML标签作为键,且文本内容被深层嵌套在_value字段中:

{
    "html": [
        {
            "head": [ { "title": [ { "_value": "252" } ] } ],
            "body": [
                {
                    "div": [
                        {
                            "p": [
                                { "a": [ { "span": [ { "span": [ { "span": [ { "_value": "Performance Work Statement" } ] } ] } ] } ] }
                            ]
                        },
                        {
                            "span": [ { "span": [ { "span": [ { "span": [ { "_value": "UNITED STATES NAVAL ACADEMY (USNA)" } ] } ] } ] } ]
                        }
                    ]
                }
            ]
        }
    ]
}

然而,我们期望的输出通常是更简洁、语义化的JSON格式,例如:

[
  { "key": "1", "value": "Performance Work Statement", "child": [] },
  {
    "key": "2",
    "value": "UNITED STATES NAVAL ACADEMY (USNA)",
    "child": [
      { "key": "2.1", "value": "子项内容A", "child": [] },
      { "key": "2.2", "value": "子项内容B", "child": [] }
    ]
  }
]

这种期望的格式要求我们不仅要提取文本,还要根据HTML的结构或业务逻辑,为数据生成自定义的“键”,并组织成扁平或层级化的结构。这超出了简单HTML-to-JSON转换库的能力,需要更灵活的解析和数据构建方法。

立即学习Python免费学习笔记(深入)”;

2. 选择合适的解析工具:Beautiful Soup

为了实现从复杂HTML中提取特定数据并构建自定义JSON结构,Python的Beautiful Soup库是一个理想的选择。它是一个用于从HTML和XML文件中提取数据的库,提供了简单而强大的API来遍历、搜索和修改解析树。

Beautiful Soup的优势:

html-ppt-to-pdf
html-ppt-to-pdf

将使用 `

` 约定的 HTML 幻灯片转换为高保真、矢量文本 PDF(使用 Playwright + Chromium 原生 PDF 功能)。

下载
  • 灵活性: 能够通过标签名、属性、CSS选择器等多种方式精确查找元素。
  • 易用性: API设计直观,上手快。
  • 健壮性: 能够处理格式不佳的HTML文档。
  • 数据提取: 方便地提取元素的文本内容和属性值。

安装 Beautiful Soup: 如果你尚未安装Beautiful Soup,可以使用pip进行安装:

pip install beautifulsoup4

3. 使用Beautiful Soup解析HTML

首先,我们需要加载HTML内容并创建一个BeautifulSoup对象。

from bs4 import BeautifulSoup
import json
import os

def parse_html_to_custom_json(html_file_path):
    """
    读取HTML文件,使用Beautiful Soup解析。
    """
    if not os.path.exists(html_file_path):
        print(f"错误:文件 '{html_file_path}' 不存在。")
        return []

    with open(html_file_path, "r", encoding="utf-8") as html_file:
        html_content = html_file.read()

    # 创建BeautifulSoup对象
    # 'html.parser' 是Python内置的解析器,通常足够使用
    soup = BeautifulSoup(html_content, 'html.parser')
    return soup

基本元素查找与文本提取:

Beautiful Soup提供了多种方法来查找HTML元素:

  • soup.find('tag_name'):查找第一个匹配的标签。
  • soup.find_all('tag_name'):查找所有匹配的标签,返回一个列表。
  • soup.select('css_selector'):使用CSS选择器查找元素。

提取元素的文本内容:

  • element.get_text():提取元素及其所有子元素的文本内容,并将其拼接成一个字符串。
  • element.string:如果元素只有一个子节点且该子节点是NavigableString(文本),则返回该文本;否则返回None。
# 示例:查找所有段落并提取文本
# soup = parse_html_to_custom_json("path/to/your/Sample.html") # 假设soup已创建
# if soup:
#     paragraphs = soup.find_all('p')
#     for p in paragraphs:
#         print(p.get_text(strip=True)) # strip=True 可以去除多余的空白字符

# 示例:查找特定类名的span
# spans = soup.find_all('span', class_='some-class-name')
# for span in spans:
#     print(span.get_text(strip=True))

4. 构建自定义JSON数据结构

要构建如示例中所示的层级化key/value/child结构,我们需要根据HTML的语义和层级关系来设计提取逻辑。一个常见的场景是,HTML文档中的标题(h1, h2, h3等)定义了文档的结构层级。

我们将通过一个模拟的HTML结构来演示如何提取标题和其后的内容,并构建层级JSON。

模拟HTML文件内容 Sample.html: 为了清晰演示,我们创建一个具有明确标题层级的HTML文件。

<!-- Sample.html -->
<!DOCTYPE html>
<html>
<head>
    <title>文档示例</title>
</head>
<body>
    <h1>第一部分:介绍</h1>
    <p>这是第一部分的主要内容。</p>
    <p>包含了一些背景

相关文章

HTML速学教程(入门课程)
HTML速学教程(入门课程)

HTML怎么学习?HTML怎么入门?HTML在哪学?HTML怎么学才快?不用担心,这里为大家提供了HTML速学教程(入门课程),有需要的小伙伴保存下载就能学习啦!

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门AI工具

更多
切问学术

切问学术是一款AI论文写作工具,复旦大学NLP团队推出的AI学术智能体。

音述AI
音述AI Hot

一款AI音频处理工具,主要用于音述AI是一个以“用声音述说故事”为核心的 AI 音乐创作与声音分享社区,适合需要提升相关任务效率的用户。

墨刀AI
墨刀AI Hot

一款AI图像与设计工具,主要用于产品经理的专属智能体,适合需要提升相关任务效率的用户。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

讯飞智作

讯飞智作是一款AI视频创作工具,AI文本配音工具,数字人课程、营销视频制作。

Loomy
Loomy Hot

一款AI工具,主要用于科大讯飞发布的桌面级 AI 助理,比 OpenClaw 更易用、更安全!,适合需要提升相关任务效率的用户。

Laper
Laper Hot

Laper是专为编剧、导演和制片人推出的 AI 原生剧本创作工具。

相关专题

更多
json数据格式
json数据格式

JSON是一种轻量级的数据交换格式。本专题为大家带来json数据格式相关文章,帮助大家解决问题。

1935

2023.08.07

json是什么
json是什么

JSON是一种轻量级的数据交换格式,具有简洁、易读、跨平台和语言的特点,JSON数据是通过键值对的方式进行组织,其中键是字符串,值可以是字符串、数值、布尔值、数组、对象或者null,在Web开发、数据交换和配置文件等方面得到广泛应用。本专题为大家提供json相关的文章、下载、课程内容,供大家免费下载体验。

2542

2023.08.23

jquery怎么操作json
jquery怎么操作json

操作的方法有:1、“$.parseJSON(jsonString)”2、“$.getJSON(url, data, success)”;3、“$.each(obj, callback)”;4、“$.ajax()”。更多jquery怎么操作json的详细内容,可以访问本专题下面的文章。

896

2023.10.13

go语言处理json数据方法
go语言处理json数据方法

本专题整合了go语言中处理json数据方法,阅读专题下面的文章了解更多详细内容。

2839

2025.09.10

Python爬虫获取数据的方法
Python爬虫获取数据的方法

Python爬虫可以通过请求库发送HTTP请求、解析库解析HTML、正则表达式提取数据,或使用数据抓取框架来获取数据。更多关于Python爬虫相关知识。详情阅读本专题下面的文章。php中文网欢迎大家前来学习。

653

2023.11.13

pip安装使用方法
pip安装使用方法

安装步骤:1、确保Python已经正确安装在您的计算机上;2、下载“get-pip.py”脚本;3、按下Win + R键,然后输入cmd并按下Enter键来打开命令行窗口;4、在命令行窗口中,使用cd命令切换到“get-pip.py”所在的目录;5、执行安装命令;6、验证安装结果即可。大家可以访问本专题下的文章,了解pip安装使用方法的更多内容。

2330

2023.10.09

更新pip版本
更新pip版本

更新pip版本方法有使用pip自身更新、使用操作系统自带的包管理工具、使用python包管理工具、手动安装最新版本。想了解更多相关的内容,请阅读专题下面的文章。

5383

2024.12.20

pip设置清华源
pip设置清华源

设置方法:1、打开终端或命令提示符窗口;2、运行“touch ~/.pip/pip.conf”命令创建一个名为pip的配置文件;3、打开pip.conf文件,然后添加“[global];index-url = https://pypi.tuna.tsinghua.edu.cn/simple”内容,这将把pip的镜像源设置为清华大学的镜像源;4、保存并关闭文件即可。

6902

2024.12.23

AI视频生成软件推荐
AI视频生成软件推荐

本专题汇总了当前主流的AI视频生成软件推荐与排行榜单,涵盖seko、AniShort、剧云、Lovart、LiblibAI及立刻mv等热门工具。同时整理了各软件在文生视频、图生视频、时长限制、画质表现及免费额度等方面的差异对比,助您快速选对适合创作需求的AI视频生成工具。

160

2026.09.16

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Sass 教程
Sass 教程

共14课时 | 1.4万人学习

Bootstrap 5教程
Bootstrap 5教程

共46课时 | 5.5万人学习

CSS教程
CSS教程

共754课时 | 93万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn