Вопрос по python и base64 кодировки

Всем привет, у меня вопрос. Я писал код, и он должен был получать ссылку на изображение. Но эта ссылка была, как я понял, закодирована в base64 , потому что когда я выводил ее в консоль, то было написано 'data:image/png;base64,' и после запятой шла закодированная ссылка. Ну я решил декодировать,все вроде нормально шло, но когда я декодировал из base64, и после этого начал декодировать из UTF-8, вылезла ошибка 'Типо UTF-8 не может декодировать первый символ'. Ну я решил вывести в консоль ссылку, после декодирования из base64, и о боже, я думал будет обычная ссылка на изображение, но там было что то типо: '\x89PNG\r\n\x1a\n\x00\x00'(и она была оочень большая). Что это? Тоже какая то кодировка? Что мне делать?

from selenium import webdriver
from time import sleep
from selenium.webdriver.chrome.options import Options 
import base64

def abstract(text):
    chrome_options = Options()  
    chrome_options.add_argument("--headless")
    
    driver = webdriver.Chrome(chrome_options=chrome_options)
    driver.get('https://coo.by/writer_new')
    
    content = driver.find_element_by_css_selector('#text')
    content.send_keys(text)
    
    seal = driver.find_element_by_css_selector('#write')
    seal.click()
    sleep(5)
    
    image = driver.find_element_by_id('list_img').get_attribute('src')
    print(image)
    image_x = image.split(',')[1]
    print(image_x)
    a = image_x.encode('UTF-8')
    b = base64.b64decode(a)
    print(b)
    png_recovered = b.decode('UTF-8')

    return png_recovered 

image = abstract('Andrei')
print(image)

Ответы (1 шт):

Автор решения: Михаил Муругов

То, что Вы получили (b'\x89PNG\r\n\x1a\n\x00\x00') это уже является изображением в байтах. Поэтому просто открываете png файл (как видно из сигнатуры) на запись байтов и записываете туда Вами полученный результат

with open("image.png", "wb") as fp:
    fp.write(b)
→ Ссылка