如何用Bash从HTML文件中提取Base64编码的PNG图片字符串?
提取HTML中Base64编码的PNG并保存
方法一:结合xmllint与sed处理
先通过xmllint提取img标签的src属性值,再用sed剥离多余内容:
xmllint --xpath "string(//img/@src)" your-file.html | sed -E 's/^data:image\/png;base64,(.*?) .*$/\1/' | base64 -d > output.png
xmllint提取src属性的完整内容(因原HTML中src引号未闭合,会包含后续的class/style内容)sed正则匹配捕获data:image/png;base64,后到第一个空格前的所有字符,仅保留Base64字符串base64 -d解码并写入PNG文件
方法二:直接用grep+sed处理(无需依赖XML解析)
如果HTML语法不规范导致xmllint解析异常,可直接通过文本匹配提取:
grep -o "data:image/png;base64,[^ ]*" your-file.html | sed 's/^data:image\/png;base64,//' | base64 -d > output.png
grep -o仅输出匹配到的data:image/png;base64,开头、直到空格结束的片段sed移除Base64前缀,再解码保存
方法三:用awk分割提取
xmllint --xpath "string(//img/@src)" your-file.html | awk -F 'data:image/png;base64,| ' '{print $2}' | base64 -d > output.png
- 以
data:image/png;base64,和空格作为分隔符,取第二部分即为目标Base64字符串
内容的提问来源于stack exchange,提问作者seanlv
相关产品推荐
相关产品推荐

