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

如何用Python Selenium提取SVG中的分类与对应百分比文本

问题:从SVG中提取分类与对应百分比数据

目标SVG结构

<svg class="rv-xy-plot__inner" width="282" height="348">
  <g class="rv-xy-plot__series rv-xy-plot__series--bar " transform="rrr">
    <rect y="rrr" height="rrr" x="0" width="rrr" style="rrr;"></rect>
    <rect y="rrr" height="rrr" x="0" width="rrr" style="rrr;"></rect>
  </g>
  <g class="rv-xy-plot__series rv-xy-plot__series--bar " transform="rrr">
    <rect y="rrr" height="rrr" x="rrr" width="rrr" style="rrr;"></rect>
    <rect y="rrr" height="rrr" x="rrr" width="rrr" style="rrr;"></rect>
  </g>
  <g class="rv-xy-plot__series rv-xy-plot__series--label typography-body-medium-xs text-primary" transform="rrr">
    <text dominant-baseline="rrr" class="rv-xy-plot__series--label-text">Category 1</text>
    <text dominant-baseline="rrr" class="rv-xy-plot__series--label-text">Category 2</text>
  </g>
  <g class="rv-xy-plot__series rv-xy-plot__series--label typography-body-medium-xs text-primary" transform="rrr">
    <text dominant-baseline="rrr" class="rv-xy-plot__series--label-text">44.83%</text>
    <text dominant-baseline="rrr" class="rv-xy-plot__series--label-text">0.00%</text>
  </g>
</svg>

当前代码的问题

你使用的find_element只会返回第一个匹配的元素,无法获取所有文本内容;同时没有处理分类和百分比的对应关系,自然得不到配对后的预期输出。

解决方案

需要分别提取分类名称和对应百分比的列表,再将两者配对格式化:

# 定位第一个label区块下的所有分类名称元素
category_elements = driver.find_elements(By.XPATH, "//*[local-name()='svg' and @class='rv-xy-plot__inner']//*[local-name()='g' and @class='rv-xy-plot__series rv-xy-plot__series--label typography-body-medium-xs text-primary'][1]//*[local-name()='text']")
categories = [elem.text for elem in category_elements]

# 定位第二个label区块下的所有百分比元素
percentage_elements = driver.find_elements(By.XPATH, "//*[local-name()='svg' and @class='rv-xy-plot__inner']//*[local-name()='g' and @class='rv-xy-plot__series rv-xy-plot__series--label typography-body-medium-xs text-primary'][2]//*[local-name()='text']")
percentages = [elem.text for elem in percentage_elements]

# 配对并输出预期格式
for cat, pct in zip(categories, percentages):
    print(f"{cat} - {pct}")

代码说明

  • 用find_elements(复数形式)获取所有匹配元素,而非单个元素
  • 通过[1]和[2]精准定位两个label类的g元素,区分分类和百分比所在区块
  • 利用zip将分类与百分比一一配对,按要求格式输出

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 16:20:26