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

Python处理Selenium获取的多段Base64图片字符串问题

解决Base64格式图片的提取与保存问题

问题根源

你的代码存在两个核心问题:

  • 读取的文件与写入文件不匹配:你写入的是base64imgLinks.json,但读取的是Links.txt,自然读不到内容,所以len(data)返回0
  • JSON解析方式错误:直接用read()把JSON文件读成字符串后遍历每个字符,这不是正确解析JSON数组的方式

修复后的代码

修正读取逻辑,正确解析JSON并处理Base64字符串:

import json
import base64

# 读取JSON文件中的Base64图片列表
with open("base64imgLinks.json", "r") as f:
    image_links = json.load(f)

# 遍历处理每个Base64链接
for index, img_src in enumerate(image_links):
    # 移除Base64前缀(注意要包含后面的逗号)
    base64_str = img_src.replace('data:image/png;base64,', '')
    # 解码并保存图片
    try:
        img_data = base64.b64decode(base64_str)
        with open(f"image_{index}.png", "wb") as fh:
            fh.write(img_data)
        print(f"成功保存图片 image_{index}.png")
    except Exception as e:
        print(f"处理图片{index}失败: {str(e)}")

更高效的替代方案

可以跳过写入JSON的步骤,在获取图片标签时直接保存,减少中间环节:

import base64

# 定位图片标签后直接处理保存
imageTags = driver.find_elements(By.XPATH, "//img[contains(@id, '__image8-_')]")

for index, img in enumerate(imageTags):
    img_src = img.get_attribute('src')
    if img_src.startswith('data:image/png;base64,'):
        base64_str = img_src.replace('data:image/png;base64,', '')
        try:
            img_data = base64.b64decode(base64_str)
            with open(f"image_{index}.png", "wb") as fh:
                fh.write(img_data)
            print(f"成功保存图片 image_{index}.png")
        except Exception as e:
            print(f"处理图片{index}失败: {str(e)}")

额外提示

  • 部分网站的Base64图片前缀可能是data:image/jpeg;base64,,请根据实际情况替换
  • 若解码报错,可尝试用base64_str.strip()清理字符串中的空格或换行后再解码

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 04:26:12