当前位置: 首页 > 知识库问答 >
问题:

为什么美丽的汤会改变html?

长孙阳成
2023-03-14

我有一个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个标签,但它一直给出作为输出。

有人能帮帮我吗?

共有1个答案

夏学名
2023-03-14

可能是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——最好的选择仍然是在您的工作流程中根本不引入它。

 类似资料:
  • 问题内容: 我正在尝试从Google搜索结果中提取链接。检查元素告诉我,我感兴趣的部分具有“ class = r”。第一个结果如下所示: 要提取“ href”,我要做: 但是我意外地得到: 我想要的地方: 属性“ ping”似乎使它感到困惑。有任何想法吗? 问题答案: 发生了什么? 如果您打印响应内容(即),则会看到您得到的HTML完全不同。页面源和响应内容不匹配。 因为内容是动态加载的,所以 不

  • 问题内容: 我正在尝试解析一个网站,并通过BeautifulSoup.findAll获取一些信息,但它并没有全部找到。.我正在使用python3 代码是这个 它只打印其中一半… 问题答案: 不同的HTML解析器对损坏的HTML的处理方式不同。该页面提供了损坏的HTML,解析器对此的处理不佳: 标准库在此特定页面上的麻烦较少: 使用将其转换为您的特定代码示例,您将这样指定解析器:

  • 我试图抓取德国聚会的新闻页面,并将所有信息存储在数据框中(“蟒蛇初学者”)。当我想将整个文本甚至日期存储到数据框中时,只存在一个小问题。似乎只有文本的最后一个元素(p... /p)将被存储在行中。我认为问题的出现是因为循环上的迭代是误导的。

  • 问题内容: 我正在尝试在以下html代码中检索一些标签。这只是一部分 您可以在这里找到该网页 我的Python代码如下 但是text变量为空,如果我打印div变量,除了标签外,我上面的HTML完全一样。 问题答案: BeautifulSoup可以使用不同的解析器来处理HTML输入。此处的HTML输入有些破损,并且默认的解析器不能很好地处理它。 改用解析器:

  • 我试图抓取这个网站:https://www.senate.gov/general/contact_information/senators_cfm.cfm 我的代码: 问题是它实际上并没有到达网站。我在soup var中得到的HTML根本不是正确网页中的HTML。 我不知道从这里去哪里!任何和所有的帮助都将不胜感激。

  • 考虑一下这段代码: 它只打印“divTag” 更新: 我基本上想在'a'标签中提取“字符串”值。