Python 3 - правильный способ записи в .html без TypeError - PullRequest
0 голосов
/ 11 января 2019
# save-webpage.py (To write first 100 characters of html source into 'simple.html')

import urllib.request, io, sys
f = urllib.request.urlopen('https://news.google.com')
webContent = f.read(100)
#g = io.open('simple.html', 'w', encoding='UTF-8')
g = io.open('simple.html', 'w')
#g.write(webContent)
g.write(webContent.decode("UTF-8"))

g.close()

2019-01-11: см. Выше исправленный рабочий код после получения ответов. Спасибо, ребята.


Оригинальный вопрос: После выполнения файл simple.html создается с 0 байтами. Вместе с ошибкой: TypeError: должно быть str, а не байтами. Пожалуйста, помогите. Я пошел по этому поводу несколькими путями, но безрезультатно. Заранее спасибо!

Ответы [ 2 ]

0 голосов
/ 11 января 2019

Файловые объекты, открытые в текстовом режиме, требуют ввода Unicode Text.

В этой строке вы закодировали в байтах UTF-8

g = io.open('simple.html', 'w', encoding='UTF-8')

Вы можете либо не кодировать, либо попробовать расшифровать его после.

0 голосов
/ 11 января 2019

g.write (webContent.decode ( "UTF-8"))

...