如何用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
相关产品推荐
相关产品推荐

