Как открыть файл HTML как UTF-8 для его анализа? - PullRequest
0 голосов
/ 26 февраля 2020

Я пытаюсь проанализировать файл html с помощью BeautifulSoup с python 3, но получаю ошибку декодирования UTF-8. Я попытался добавить опцию, чтобы открыть декодирование файла как UTF-8, но ошибка все еще появляется.

Как это исправить?

Это то, что я до сих пор.

from bs4 import BeautifulSoup

with open("file.html") as fp:                      
    unicode_html = fp.read().decode('utf-8', 'ignore')  

soup = BeautifulSoup( unicode_html)
Traceback (most recent call last):          
/usr/lib/python3.8/codecs.py", line 322, in decode        

(result, consumed) = self._buffer_decode(data, self.errors, final) 

 UnicodeDecodeError: 'utf-8' codec can't decode byte 0xf3 in position 30287: invalid continuation byte

1 Ответ

1 голос
/ 26 февраля 2020

Режим по умолчанию для open() - rt, который читается в текстовом режиме. Используйте rb для чтения в двоичном режиме. В данный момент декодер получает декодированный текст, который ему может не понравиться.

Ошибка UnicodeDecodeError, вероятно, возникает из-за того, что устройство вывода (например, консоль) не поддерживает кодировку.

В командной строке выводится ошибка:

AttributeError: у объекта 'str' нет атрибута 'decode'

, что выглядит более корректной ошибкой , Я также использовал shebang

#! / Usr / bin / env python3 -X utf8

, который Python выводит UTF-8, чтобы получить AttributeError.

Измените строку:

with open("file.html") as fp:

на

with open("file.html", "rb") as fp:
...