python利用lxml库剩下操作svg图片 |
||||||||||||||
+ 目录在大多数场景中,我们都用lxml库解析网页源码,但你是否知道,lxml 库也是可以操作 svg 图片的。我们可以使用 lxml 中的 etree 模块来解析 SVG 文件,然后使用 SVG 中的各种元素和属性来进行操作。
lxml 操作 svg 图片示例在本篇博客的入门篇,我们首先使用一下 lxml 库解析 svg 文件,并修改它的颜色。 SVG 图片生成,可以查看 《Python 生成 svg 图片,一篇博客带你掌握 Python 与 svg 之间的操作》 这篇博客。 借用 svgwrite 库,生成一个红色背景的 svg 图片。
?
同时查看一下 svg 内容,如下所示www.lu0.com。
?
我们需要替换的内容是 fill=white ,将其修改为 fill=#03a9f4。使用 lxml 读取该文件,进行颜色替换。
?
此时替换之后,再次查看 svg 图片源码内容,如下所示。
?
重点注意 text 元素部分,发现 fill 属性的值已经被修改成最新的颜色了。
lxml 给 svg 图片添加新元素使用 append() 函数可以给 svg 图片添加新元素,例如下述代码将添加一个矩形到图片中。
?
这里矩形的定位并没有精确计算,实现的效果图如下所示。
lxml 删除 svg 图片中的元素除新增外,还可以对 svg 中元素进行删除操作。示例代码如下所示。
?
运行代发现通过 xpath 无法查找到目标元素 text,这时因为 SVG 文件中含有命名空间,导致 xpath 语法查询不到相应的元素,可以通过为 xpath 语法指定命名空间来解决这个问题。 添加命名空间之后的提取语法如下所示。
?
尤其注意 xpath 部分需要使用 //svg:text 进行提取。 如果不提前生命 ns 变量,可以使用下述代码进行指定命名空间。
|