Ошибка в преобразовании ISO-8859-1 в UTF8
html, который возвращает POST имеет кодировку ISO-8859-1, при попытке преобразования в UTF-8 выпадает в ошибку.
import requests
url = "http://___"
payload='some text'
headers = {some headers}
r=requests.request("POST", url, headers=headers, data=payload)
r.encoding
ISO-8859-1
html=r.text.encode('ISO-8859-1').decode('UTF-8')
'utf-8' codec can't decode byte 0xcf in position 226: invalid continuation byte
Если поискать пример конкретного текста, то можно увидеть такое:
from bs4 import BeautifulSoup
soup = BeautifulSoup(r.text, 'html.parser')
div=soup.find('div', {'class': 'thumbnail_3'})
mystr=div.find_all('td')[0].get_text()
print(mystr)
Âàðèàíòû íàèìåíîâàíèÿ ïðîäóêöèè
Ответы (1 шт):
Автор решения: Andy Pavlov
→ Ссылка
У меня перекодировалось при таком составе кодировок:
text = 'Âàðèàíòû íàèìåíîâàíèÿ ïðîäóêöèè'
print(text.encode('CP1252').decode('CP1251', errors='ignore'))
# Варианты наименования продукции
Могу посоветовать в спорных случаях в список свести себе все варианты поддерживаемых кодировок с https://docs.python.org/3/library/codecs.html#standard-encodings. И в цикле их все попробовать с распечаткой применить. Так найдете нужную комбинацию кодировок.