我正在尝试使用Python读取大量.htm
文件。为此,我使用以下内容:
HtmlFile = codecs.open(file, 'r')
text = BeautifulSoup(HtmlFile.read()).text
但是,这将导致以下错误:
UnicodeDecodeError: 'charmap' codec can't decode byte 0x81 in position 411:
character maps to <undefined>
因此,我尝试使用utf-8
进行编码,如下所示:
HtmlFile = codecs.open(file, 'r', encoding='utf-8')
text = BeautifulSoup(HtmlFile.read()).text
然后我收到此错误:
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xa0 in position 4565:
invalid start byte
我尝试遵循建议here,但没有帮助。任何帮助将不胜感激!
答案 0 :(得分:2)
我已经做了一些研究,这是Microsoft使用CP1252编码生成的文件的问题,但是有些事情没有正确提取。给出以下内容:
<meta http-equiv=Content-Type content="text/html; charset=windows-1252">
<meta name=Generator content="Microsoft Word 15 (filtered)">
在您的html文件中,这似乎很有可能。
根据此answer,如果您在该示例中使用Latin-1编码,则可能会有所帮助:
HtmlFile = codecs.open(file, 'r', encoding='latin-1')
text = BeautifulSoup(HtmlFile.read()).text
让我知道是否可行。请注意,Latin-1并不具有Microsoft编码所具有的所有字符。