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

Python代码无法解码Base64问题求助及代码优化建议

问题:谷歌图片Base64编码解码失败及代码优化需求

我是首次发帖的Python新手,正在编写一款从谷歌图片网站提取并解码Base64编码图片的程序。目前已成功获取到目标Base64编码数据,但无法在程序内完成解码。

相关代码片段

from bs4 import BeautifulSoup
import base64

for a in soup.findAll(attrs={'class': 'fR600b'}):
    name = a.find('img')
    code = name.get('src')
    if code is not None:
        code = code.replace('data:image/jpeg;base64,', '')
        code = code.replace('data:image/png;base64,', '')
        print(code)
        for c in code:
            try:
                decode = base64.b64decode(c)
                print(decode)

预期与实际输出

预期输出为完整的Base64编码数据及对应的解码数据,但实际仅打印编码数据,解码结果为空:

/9j/4AAQSkZJRgABAQAAAQABAAD/2wCEAAkGBxMTEhUSExMVFhUXGRYaGRcYGBoXGBgeGhcYGhgYGx0YHSggGBomHh etc.
b''
b''
/9j/4AAQSkZJRgABAQAAAQABAAD/2wCEAAkGBxMTEhUTEhMVFRUSFxcYGRgXFxgXGhcXGBUXFxUaGBUYHiggHRolGx etc. b''
b''

恳请帮忙解决解码问题,并提供代码优化建议!


解决方案与优化建议

核心问题修复

你的代码存在关键错误:循环遍历Base64字符串的单个字符并单独解码。Base64编码以4个字符为一组进行解码,单个字符无法被正确解析,因此输出空字节串b''。

修复后的代码直接对完整的Base64字符串解码:

from bs4 import BeautifulSoup
import base64
import re

for idx, a in enumerate(soup.findAll(attrs={'class': 'fR600b'})):
    img_tag = a.find('img')
    if not img_tag:
        continue
    src = img_tag.get('src')
    if not src:
        continue
    
    # 一次性移除所有图片类型的Base64前缀
    base64_data = re.sub(r'data:image/(jpeg|png);base64,', '', src)
    print(f"Base64编码数据:{base64_data[:100]}...")  # 截断长输出
    
    try:
        decoded_img = base64.b64decode(base64_data)
        print(f"解码后字节数:{len(decoded_img)}")
        # 可选:保存图片到本地
        with open(f"extracted_img_{idx}.jpg", "wb") as f:
            f.write(decoded_img)
    except base64.binascii.Error as e:
        print(f"解码失败:{str(e)}")

代码优化建议

  • 用正则替换前缀:相比多次replace,正则可一次性匹配并移除所有图片类型的Base64前缀,更简洁健壮。
  • 增加空值校验:提前跳过无img标签或src属性为空的元素,避免无效操作。
  • 完善异常处理:捕获base64.binascii.Error,处理无效Base64编码的情况,防止程序崩溃。
  • 优化输出内容:避免打印完整二进制数据,改用输出字节数或截断编码数据,提升可读性。
  • 规范变量命名:将name改为img_tag、code改为src/base64_data,让代码逻辑更清晰。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 18:15:26