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)
Это исправило мою вторую ошибку