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

带br标签的Beautifulsoup同级结构

孔权
2023-03-14
问题内容

我正在尝试使用BeautifulSoup Python库解析HTML文档,但是结构由于<br>标签而失真。让我举一个例子。

输入HTML:

<div>
  some text <br>
  <span> some more text </span> <br>
  <span> and more text </span>
</div>

BeautifulSoup解释的HTML:

<div>
  some text
  <br>
    <span> some more text </span>
    <br>
      <span> and more text </span>
    </br>
  </br>
</div>

在源中,跨度可以被视为同级。解析后(使用默认的解析器),由于br标签成为结构的一部分,因此跨度突然不再是同级的。

我能想到的解决方案是<br>在将html倒入Beautifulsoup之前完全剥离标签,但这似乎不太优雅,因为这需要我更改输入。有什么更好的方法来解决这个问题?


问题答案:

最好的选择是extract()换行。它比您想象的要容易:)。

>>> from bs4 import BeautifulSoup as BS
>>> html = """<div>
...   some text <br>
...   <span> some more text </span> <br>
...   <span> and more text </span>
... </div>"""
>>> soup = BS(html)
>>> for linebreak in soup.find_all('br'):
...     linebreak.extract()
... 
<br/>
<br/>
>>> print soup.prettify()
<html>
 <body>
  <div>
   some text
   <span>
    some more text
   </span>
   <span>
    and more text
   </span>
  </div>
 </body>
</html>


 类似资料:
  • 结构体中的字段除了有名字和类型外,还可以有一个可选的标签(tag):它是一个附属于字段的字符串,可以是文档或其他的重要标记。标签的内容不可以在一般的编程中使用,只有包 reflect 能获取它。我们将在下一章(第 11.10 节)中深入的探讨 reflect包,它可以在运行时自省类型、属性和方法,比如:在一个变量上调用 reflect.TypeOf() 可以获取变量的正确类型,如果变量是一个结构体

  • 问题内容: 我可以使用BS轻松遍历通用标签,但是我不知道如何查找特定标签。例如,我怎么能找到所有的出现?BS可以吗? 问题答案: 以下应该工作 有两种搜索标签的方法。 http://www.crummy.com/software/BeautifulSoup/documentation.html 有关更多文本的理解和使用 http://lxml.de/elementsoup.html

  • 问题内容: 我正在抓取页面,并从该页面上的表中获取所有元素,如下所示: 输出: 现在,我试图获取标签的样式,但是我不知道如何。例如,如果我这样做: 它显然只是打印东西。我想我大概可以做这样的事情,比如,但一切到目前为止,我已经尝试并没有带来我想要的东西。 问题答案: 只需使用以下属性即可访问: 如果您只想要具有样式属性an的tr标记来获取全部标记: 或使用CSS选择器: 使用您的实际网址:

  • 本文向大家介绍你知道p标签和br标签两者的区别是什么吗?相关面试题,主要包含被问及你知道p标签和br标签两者的区别是什么吗?时的应答技巧和注意事项,需要的朋友参考一下 block 块级元素,br 内联元素; block 能被 css 修改,br 不能; block 非单标签元素,br 是; block 换行靠的是块级元素特性,br 换行靠的可能是类似 \n 的渲染规则

  • 我正试图从Zalora那里获得3件事:1。项目品牌2。项目名称3。项目价格(旧) 以下是我最初的尝试: 输出: 然后我做进一步的调查: 输出: 这是令我困惑的奇怪的事情,在ul标签中应该有很多标签(我需要的3样东西都在那些隐藏的标签中),为什么它们不显示? 事实上,我试图在ul标签中使用BeautifulSoup刮取的所有内容都没有输出。

  • 问题内容: 我正在使用beautifulSoup从网站提取数据。每当您重新加载页面时,该网站上的文本都会更改,因此基本上,我希望能够将重点放在类名上作为静态变量,因为文本是动态的。 它打印出 当页面重新加载,我仍然有重点的领域,但我不知道如何只打印文本(在这种情况下是:4) 一旦解决了这个问题,我还有另一个问题:如果该类包含多个标签,是否有办法获取更多静态数据,以确保它只打印我在搜索的文本,而不是