проблема с кодировкой при парсинге

from bs4 import BeautifulSoup
import requests
url = 'https://begoodtool.com/home/uk'

headers = {
    'accept':'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7',
    'user-agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/133.0.0.0 Safari/537.36 OPR/118.0.0.0'
}

reg = requests.get(url, headers=headers)
src = reg.text

with open('parser_03.html', 'w', encoding='utf-8') as file:
    file.write(src)
    print(src)

проблема выводит краказябку при том что сайт на utf-8 а прикол в том, если взять краказябку и пробить на кодировку то пишет кодировка gb18030

import chardet

with open('parser_03.html', 'rb') as file:
    dytes = file.read()
    detect = chardet.detect(dytes)
print(detect)

после делаю вывод

with open('parser_03.html', newline='',encoding='gb18030') as file:
    src = file.read()
    print(src)

и все символи кирилици становяться китайскими иероглифами а при utf краказябка


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

Автор решения: Сергей Ш
from bs4 import BeautifulSoup
import requests
url = 'https://begoodtool.com/home/uk'
headers = {
    'accept':'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7',
    'user-agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/133.0.0.0 Safari/537.36 OPR/118.0.0.0'
}
reg = requests.get(url, headers=headers)

# №-
print(reg.text)
'''
...
<title>СпиÑок онлайн-ÑнÑÑÑÑменÑÑв - Be Good Tool</title>
...
'''

# №1
soup = BeautifulSoup(reg.content, "lxml")
#print(soup.prettify())
print(str(soup))
'''
...
<title>Список онлайн-інструментів - Be Good Tool</title>
...
'''

# №2
reg.encoding = 'utf-8'
print(reg.text)
'''
...
<title>Список онлайн-інструментів - Be Good Tool</title>
...
'''
→ Ссылка