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

