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

如何解析JSON对象中的HTML内容并提取指定信息?

解析含HTML的JSON并提取指定信息

核心思路

先从JSON对象中提取出HTML字符串,再用专业的HTML解析库(而非正则表达式)定位目标内容,避免因HTML结构微调导致解析失效。以下以Python为例,用BeautifulSoup实现提取:

步骤与代码

  1. 导入依赖库
from bs4 import BeautifulSoup
import html  # 若HTML字符串含转义字符(如<),需用此模块还原
  1. 从JSON提取并处理HTML
    假设你的JSON对象结构为{"html_content": "待解析的HTML字符串"},先取出HTML内容并还原转义字符:
# 示例JSON对象
json_data = {
    "html_content": "<span style="color:#800000">protected</span></div></div><div><div><span style="font-weight:bold;font-size:150%">wummie</span><br /><span style="font-size:105%">Independent Faction</span><br /><span style="font-style:italic;font-size:110%">woman</span><br /><br /><span style="font-weight:bold">SlowlyWastingAway:</span> Deusphage<br /><br /><span style="font-weight:bold">Member Count:</span> 1<br /><span style="font-weight:bold">Age:</span> 2 years, 5 months and 6 days<br /><span style="font-weight:bold">Bank:</span> 0 Regals<br /><br /><span style="font-weight:bold">Flags:</span><br /><span style="color:#800000">open</span> | <span style="color:#800000">monsters</span> | <span style="color:#008000">animals</span><br />"
}

# 提取HTML并还原转义字符
html_str = json_data["html_content"]
html_content = html.unescape(html_str)
  1. 解析HTML并提取目标信息
# 初始化解析器
soup = BeautifulSoup(html_content, "html.parser")

# 提取基础信息
name = soup.find("span", style="font-weight:bold;font-size:150%").get_text(strip=True)
faction = soup.find("span", style="font-size:105%").get_text(strip=True)
gender = soup.find("span", style="font-style:italic;font-size:110%").get_text(strip=True)

# 提取角色关联信息
role_label = soup.find("span", text="SlowlyWastingAway:")
role_info = f"{role_label.get_text(strip=True)} {role_label.next_sibling.strip()}"

# 提取统计信息
member_count = f"{soup.find('span', text='Member Count:').get_text(strip=True)} {soup.find('span', text='Member Count:').next_sibling.strip()}"
age = f"{soup.find('span', text='Age:').get_text(strip=True)} {soup.find('span', text='Age:').next_sibling.strip()}"
bank = f"{soup.find('span', text='Bank:').get_text(strip=True)} {soup.find('span', text='Bank:').next_sibling.strip()}"

# 提取旗帜信息
flags_label = soup.find("span", text="Flags:")
flags_list = [span.get_text(strip=True) for span in flags_label.find_next_siblings("span")]
flags_info = f"{flags_label.get_text(strip=True)}\n{' | '.join(flags_list)}"
  1. 按要求格式输出
# 组合并打印结果
result = f"""{name}
{faction}
{gender}

{role_info}

{member_count}
{age}
{bank}

{flags_info}"""

print(result)

输出结果

wummie
Independent Faction
woman

SlowlyWastingAway: Deusphage

Member Count: 1
Age: 2 years, 5 months and 6 days
Bank: 0 Regals

Flags:
open | monsters | animals

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 07:16:29