Задать вопрос
@Mist8

Как настроить кодировку при сохранении html файла в urllib (python 3.4)?

Нужно скачать и сохранить станицу. Простая задача, но не понимаю что делать с кодировкой.

import urllib.request

url = 'http://yandex.ru'
html = urllib.request.urlopen(url).read()

f = open('page.html', 'w')
f.write(str(html))


Код сохраняет страницу, но в неправильной кодировке. Что нужно исправить в коде, чтобы страница сохранялась в правильной кодировке? Если распечатать print(html) - так же неправильная кодировка.
  • Вопрос задан
  • 3424 просмотра
Подписаться 1 Оценить Комментировать
Решения вопроса 2
adugin
@adugin Куратор тега Python
1) Какая кодировка прописана в заголовках meta самой страницы, и также о какой кодировке сообщает сервер?
2) В какую кодировку всё это сохраняется, и соответствует ли кодировка в meta фактической кодировке?

Технически просто - если, скажем, страница в utf-8, а надо сохранить в cp1251:
html = urllib.request.urlopen(url).read().decode('utf-8').encode('cp1251')

... и проверить кодировку в meta-заголовке сохранённой страницы.

str(html) - лишнее, html и так строка.
Ответ написан
@Mist8 Автор вопроса
Решение (добавить к строке запроса ".decode('cp1251')" ):

import urllib.request


url = 'http://example.com'

html = urllib.request.urlopen(url).read().decode('cp1251')

f = open('page.html', 'w')
f.write(html)
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы