Я пытаюсь создать HTML Parser в Python 3.4.2 на Macbook Air (OS X):Невозможно преобразовать объект '' байтов к Силе неявно HTML Parser Python3 Ошибка
plaintext.py:
from html.parser import HTMLParser
import urllib.request, formatter, sys
website = urllib.request.urlopen("http://www.profmcmillan.com")
data = website.read()
website.close()
format = formatter.AbstractFormatter(formatter.DumbWriter(sys.stdout))
ptext = HTMLParser(format)
ptext.feed(data)
ptext.close()
Но я получаю следующее сообщение об ошибке:
Traceback (most recent call last):
File "/Users/deannarobertazzi/Documents/plaintext.py", line 9, in <module>
ptext.feed(data)
File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/html/parser.py", line 164, in feed
self.rawdata = self.rawdata + data
TypeError: Can't convert 'bytes' object to str implicitly
Я посмотрел на документацию Python и, видимо, способ разбора данных HTML в Python 3 сильно отличается от выполнения такой вещи в Python 2. Я не Не знаю, как o изменить мой код, чтобы он работал на Python 3. Спасибо.
Какая кодировка заключается в том, что 'data' bytestring использует? Если 'latin-1', например,' ptext.feed (data.decode ('latin-1')) будет работать. Это не очень отличается от Python 2, вы просто должны тщательно различать текст (строки символов Unicode) и байтовые строки (строки произвольных байтов, часто кодирующие текст с помощью различных возможных кодеков) ... что было хорошей идеей но теперь является обязательным :-). –
Я включил UTF-8 в строку ptext.feed (data.decode ('UTF-8)), и он сработал. – brown1001