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

如何用lxml.etree同时解析XML的DIV6与DIV7节点生成结构化表格

XML API 爬取:同时解析DIV6与DIV5下的DIV7节点并生成表格

问题说明

  • 熟悉HTML页面爬取,正在学习更高效简洁的XML API爬取方式
  • 当前代码仅能提取XML中的DIV6节点及其子节点,遗漏了DIV5下的DIV7兄弟节点
  • 需求:实现同时解析这两类节点,并生成指定结构的表格

示例XML数据

<root>
  <DIV5>
    <DIV7>
      <content>DIV7内容1</content>
      <id>701</id>
    </DIV7>
    <DIV7>
      <content>DIV7内容2</content>
      <id>702</id>
    </DIV7>
  </DIV5>
  <DIV6>
    <content>DIV6内容1</content>
    <id>601</id>
  </DIV6>
  <DIV6>
    <content>DIV6内容2</content>
    <id>602</id>
  </DIV6>
</root>

初始代码(仅处理DIV6)

import xml.etree.ElementTree as ET

# 加载XML文件
tree = ET.parse('data.xml')
root = tree.getroot()

# 仅提取DIV6节点数据
div6_nodes = root.findall('DIV6')
result = []
for node in div6_nodes:
    item = {
        'id': node.find('id').text,
        'content': node.find('content').text,
        'type': 'DIV6'
    }
    result.append(item)

# 打印结果
for item in result:
    print(item)

修改后的代码(同时解析DIV6与DIV7)

import xml.etree.ElementTree as ET

tree = ET.parse('data.xml')
root = tree.getroot()

result = []

# 处理DIV6节点
div6_nodes = root.findall('DIV6')
for node in div6_nodes:
    item = {
        'id': node.find('id').text,
        'content': node.find('content').text,
        'type': 'DIV6'
    }
    result.append(item)

# 处理DIV5下的DIV7节点
div5_node = root.find('DIV5')
if div5_node is not None:
    div7_nodes = div5_node.findall('DIV7')
    for node in div7_nodes:
        item = {
            'id': node.find('id').text,
            'content': node.find('content').text,
            'type': 'DIV7'
        }
        result.append(item)

# 生成指定结构的Markdown表格
print("| ID | 内容 | 类型 |")
print("|----|------|------|")
for item in result:
    print(f"| {item['id']} | {item['content']} | {item['type']} |")

代码说明

  1. 新增DIV5节点的查找逻辑,遍历其下所有DIV7子节点
  2. 统一数据结构,通过type字段区分节点来源
  3. 最终输出标准Markdown表格,满足结构化展示需求

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 11:20:01