UnicodeEncodeError: 'latin-1' codec can't encode character '\u0402' in position 0: ordinal not in range(256) ошибка в куки

У меня возникает ошибка при добавлении cookies UnicodeEncodeError: 'latin-1' codec can't encode character '\u0402' in position 0: ordinal not in range(256)

Если убрать в замом методе cookies=cookies, то все работает нормально

   def get_page_source(self, url: str) -> BeautifulSoup | None:

        headers = {
            "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8",
            "Accept-Encoding": "gzip, deflate, br",
            "Accept-Language": "ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3",
            "Connection": "keep-alive",
            "Host": "somesite.com",
            "Sec-Fetch-Dest": "document",
            "Sec-Fetch-Mode": "navigate",
            "Sec-Fetch-Site": "cross-site",
            "Upgrade-Insecure-Requests": "1",
            "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101 Firefox/102.0"
        }

        cookies = self.cookies_from_file("session")

        response = requests.get(url, headers=headers, cookies=cookies)

функция для того, чтобы прочитать куки из файла

    def cookies_from_file(self, filename: str) -> dict:
        cookies_data = None

        with open(filename) as file:
            cookies_data = file.read().replace('\n', '').split(';')

        cookies_dic = {}

        for x in cookies_data:
            key = x.split('=')[0]
            value = x.split('=')[1]
            cookies_dic[key] = value

        return cookies_dic


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

Автор решения: Данил

Для того, чтобы достать куки из файла я использовать pickle, теперь ф-ция выглядит так

    def cookies_from_file(self, filename: str) -> dict:
        for cookie in pickle.load(open(filename, "rb")):
            return cookie

теперь распакованный так сказать куки выглядит так

{'domain': 'somesite.com',
 'expiry': 1661366023,
 'httpOnly': False,
 'name': 'experiment__everlastingHomeTouchExperiment',
 'path': '/',
 'sameSite': 'None',
 'secure': False,
 'value': ''}

Это позволило избавиться от изначальной ошибки, но вызвало новую также связанную с куки, наверное это конкретно для моего случая, но вдруг кому-то нужно будет TypeError: expected string or bytes-like object. Здесь ясно написано, что ожидается определенный тип данных, фиксится это просто.

Здесь я получаю показанный ранее словарь

cookies = self.cookies_from_file("session")

Теперь просто преобразовываю все значения словаря в строку

 for key, value in cookies.items():
     cookies[key] = str(value)

Это исправило мою вторую ошибку

→ Ссылка