我有一个HTML文件。我试着打开它,读里面的内容
with open("M_ALARM_102.HTML", "r") as f:
contents = f.read()
print(contents)
当我打印上述命令中的内容时,它可以完美地打印。但是,当我将内容传递给美丽汤并打印汤时,它会更改HTML代码
soup = BeautifulSoup(contents, html.parser)
print(soup)
这是BeautifulSoup的输出
ÿþ<html>
<head>
<meta charset="UTF-8">
<title>ARRÊT SERVOS</title>
<style type="text/css">
我不明白为什么它这样做。我需要从中提取3个标签,但它一直给出无
作为输出。
有人能帮帮我吗?
可能是BeautifulSoup使用的解析器没有将该文件识别为html。
我在该输出中看到两个“奇怪”的字符:ÿþ
。它们看起来像是将 BOM(字节顺序标记)添加到文件中的东西,而解析器需要有效的 utf-8。很
有可能这就是问题所在。
解决 BOM 表问题的一种方法是在记事本中打开该文件,并将其另存为 UTF-8。记事本非常擅长做这种事情。
您也可以通过使用< code >和open("M_ALARM_102)在python中以utf-16格式打开文件来修复它。HTML "," r ",encoding="utf-16 ")作为f:。请注意,这里您直接指定了编码(参见python文档中关于unicode的更多内容)。
请注意,我没有亲自尝试后一种方法,所以我不确定它是否真的会删除BOM——最好的选择仍然是在您的工作流程中根本不引入它。