如何在Beautifulsoup中用标签包裹绳子



我想用 p标签包装很多div-Elements/块的内容:

<div class='value'>
  some content
</div>

应该变成:

<div class='value'>
  <p>
    some content
  </p>
</div>

我的想法是通过用find_all过滤字符串,然后用新标签包装来获取内容(使用BS4(。不知道,它是否有效。我无法从具有特定属性/值的标签中过滤内容。

我可以使用正则态度而不是BS4。但是我想在BS4中进行所有转换(在此旁边还有更多转换(。

相信与否,您可以使用 wrap 。: - (

因为您可能或不想包装内部div元素,所以我决定稍微更改您的HTML代码,以便我可以给您代码,以显示如何更改内部div而不更改"外部"的代码它。我敢肯定,您将看到如何更改所有div s。

这是如何。

>>> from bs4 import BeautifulSoup
>>> soup = BeautifulSoup(open('pjoern.htm').read(), 'lxml')
>>> inner_div = soup.findAll('div')[1]
>>> inner_div
<div>
some content
</div>
>>> inner_div.contents[0].wrap(soup.new_tag('p'))
<p>
some content
</p>
>>> print(soup.prettify())
<html>
 <body>
  <div class="value">
   <div>
    <p>
     some content
    </p>
   </div>
  </div>
 </body>
</html>

最新更新