Вопрос по 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)