svg文件保存成svg图片并通过cairosvg库转换png图片

之所以会碰到这个需求是因为在做暗网一个站点采集时候其站点验证码均采用svg矢量图格式,一般的打码平台是不能够识别svg格式图片的所以我们需要将如下图所示的一堆转换成svg图片在通过cairosvg转换成png格式的图片
svg文件保存成svg图片并通过cairosvg库转换png图片_第1张图片
svg验证码图片源码

首先我们要了解到在html中svg标签中内容直接保存svg结尾的文件是自动变为svg图片的如下操作

"""
通过xpath语法提取svg标签全部内容,在保存为svg结尾的文件,这时候就会将我们看到的这段svg源码转化为svg格式的图片了
"""
response = etree.HTML(resp.text)
svg = response.xpath('//p[@style="margin-bottom:20px"]/svg')[0]
svg = etree.tostring(svg, encoding='utf-8')
svg = str(svg, encoding='utf-8')
#print(svg)
with open('e43cg.svg','w',encoding='utf-8') as f1:
    f1.write(svg)
    f1.close()

在这里插入图片描述
在这里插入图片描述
如上图所示就是我们转换后的svg图片,接下来就是通过cairosvg库将svg转换成png了,cairosvg官方文档安装个库比较简单pip3 install cairosvg -i https://pypi.tuna.tsinghua.edu.cn/simple 记得加个清华源,
安装完成后windows下引用后运行可能会报如下错误

svg文件保存成svg图片并通过cairosvg库转换png图片_第2张图片
原因是windows下缺少gtk+这套中的一些图像系统依赖,我们只需下载gtk+全家桶我下载的是2.20下载完成后新建一个目录保存后解压,然后进入到bin目录后复制出完整的bin目录下完整的路径比如我的 C:\ruanjian\GTK\bin 然后右键我的电脑-属性-高级系统设置-环境变量-系统变量-Path 新建输入我们刚才复制的路径如图
svg文件保存成svg图片并通过cairosvg库转换png图片_第3张图片
保存退出即可

接下来就是svg转png了如下所示也可参照官方文档给出示例文档示例

import cairosvg

cairosvg.svg2png(file_obj=open('e43cg.svg',"rb"), write_to='e43cg.png')

如果报路径问题记得指定你图片所在目录的路径
在这里插入图片描述
在这里插入图片描述

你可能感兴趣的:(爬虫)