当前位置: 首页 > 面试题库 >

为什么BeautifulSoup修改我的自闭元素?

孟祯
2023-03-14
问题内容

这是我的脚本:

import BeautifulSoup

if __name__ == "__main__":
    data = """
    <root>
        <obj id="3"/>
        <obj id="5"/>
        <obj id="3"/>
    </root>
    """
    soup = BeautifulSoup.BeautifulStoneSoup(data)
    print soup

运行时,将打印:

<root>
  <obj id="3"></obj>
  <obj id="5"></obj>
  <obj id="3"></obj>
</root>

我希望它保持相同的结构。我怎样才能做到这一点?


问题答案:

从Beautiful Soup文档中:

最常见的缺点BeautifulStoneSoup是它不了解自闭合标签。HTML具有一组固定的自闭标签,但对于XML,则取决于DTD所说的内容。您可以BeautifulStoneSoup通过将某些标签作为selfClosingTags构造函数的参数传递来告知某些标签是自闭合的



 类似资料:
  • 我想把一个数组的不同数组元素组合(排列)放到一个列表中。我通过for循环交换数组的第一个和最后一个元素,组合(排列)被添加到列表中。然后,第二个元素和最后一个元素之前的元素被交换并添加到列表中,依此类推。假设数组是,添加到列表中的第一个元素将是。第二个元素是。但我最终得到的是列表中所有元素的。 问题是添加到List中的元素也会随着数组的当前修改而相应地修改。我最终在List中得到了类似的数组元素。

  • 问题内容: 我知道React教程和文档毫无疑问地警告说,状态不应该直接变异,所有事情都应该通过。 我想了解一下,为什么我不能直接更改状态,然后(在同一函数中)仅调用来触发它。 例如:下面的代码似乎正常工作: 我全都遵循以下约定,但我想进一步加深对ReactJS实际工作方式的理解,以及可能出现问题的地方或上述代码的优缺点。 文档下的注释基本上标识了两个陷阱: 如果您直接更改状态,然后再调用它,则可能

  • 问题内容: 我正在遵循一个教程来尝试学习如何使用BeautifulSoup。我正在尝试从下载的HTML页面上的URL中删除名称。至此,我的工作非常顺利。 但是当我进入下一部分时 我得到这个错误 问题答案: 这是IDLE和BeautifulSoup对象(子类)之间的错误交互。见问题1757057;已经有一段时间了。 解决方法是先将对象转换为纯unicode值:

  • 我正在尝试使用forge mod loader为Minecraft(1.7.10)制作一个mod,细节并不是特别相关,但基本上当我尝试创建一个定制物品时,我会在一个en_US中注册物品名称。lang文件。这是我的。。。 主类 自定义项目类(Succ) en_US. lang文件 问题在于当我尝试加载单人世界时,该项目显示为项目。通用金戈特。名称,而不是通用名称。如果需要任何附加信息来解决我的愚蠢问

  • 我在用BeautifulSoup抓取网页时收到一个

  • 问题内容: public class StackOverFlow { public static void main(String[] args) { ArrayList al = new ArrayList (); al.add(“A”); al.add(“B”); markAsNull(al); System.out.println(“ArrayList elements are “+al);