@AlexRAV

Как определить кодировку сайта на Python?

Нужно распарсить эту страничку: dailybloggz.com/tfy/andreeva_secrets

Как бы я не пытался, получается всякая лажа с кодировками, изначально, при выводе, получаем русский текст в следующем виде:
\x8d\xe5\xe4\xe0\xe2\xed\xee \xe2\xe8\xe4\xe5\xeb\xe0

Всякие онлайн декодеры заваливались, кроме одного https://2cyr.com/decode/?lang=ru
Он определил кодировку как MACCYRILLIC, делаю:
print(soup.prettify().encode('MACCYRILLIC'))
На выходе получаю то же самое что и на входе.
.encode('utf-8') - результат тот же самый.

Ну и собственно сам вопрос: Как определить кодировку? Или может быть я сам что-то неправильно делаю?

Весь код модуля:
import urllib.request
from bs4 import BeautifulSoup


url = 'http://dailybloggz.com/tfy/andreeva_secrets/'
req = urllib.request.Request(url, headers={'User-Agent': "Magic Browser"})
con = urllib.request.urlopen(req)
soup = BeautifulSoup(con, "html5lib")
print(soup.prettify().encode('utf-8'))
  • Вопрос задан
  • 1582 просмотра
Решения вопроса 1
@asd111
На сайте utf-8.
Только что проверил
from pprint import pprint

import requests

data = requests.get("http://dailybloggz.com/tfy/andreeva_secrets/")
pprint(data.content.decode('utf-8'))

Все норм выводит.
Может у вас консоль не в utf-8 ?
Кодировка указывается в meta charset в начале страницы.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@Andy_U
Вот этот код работает в консоли Pycharm (определение кодировки - автоматически!):

# -*- coding: utf-8 -*-

import urllib.request

resource = urllib.request.urlopen('http://dailybloggz.com/tfy/andreeva_secrets')
charset = resource.headers.get_content_charset()
print(charset)
content =  resource.read().decode(charset)
print(content)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы