如何在BeautifulSoup中的标签之间替换文本?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在BeautifulSoup中的标签之间替换文本?相关的知识,希望对你有一定的参考价值。

我已经定义了price变量:

price = '7.12'

并且我正在尝试将0.00中的<span class="rec-item-cost">0.00</span>替换为price

我已定义soupPrice以从标记中获取0.00

soupPrice = BeautifulSoup('<span class="rec-item-cost">0.00</span>', 'lxml').span.text

然后我尝试:

soupPrice = BeautifulSoup('<span class="rec-item-cost">0.00</span>', 'lxml').span.text.replace_with(price)

哪个会产生错误:

AttributeError: 'str' object has no attribute 'replace_with'

所以我然后尝试删除代码的.text部分:

soupPrice = BeautifulSoup('<span class="rec-item-cost">0.00</span>', 'lxml').span.replace_with(price)

这次,如果我写print(soupPrice),我会得到:

<span class="rec-item-cost">0.00</span>

我应该如何编写代码,以便用7.12正确替换0.00?

答案

尝试这样:

price = 7.12
soupPrice = BeautifulSoup('<span class="rec-item-cost">0.00</span>', 'lxml').span
new_price = str(soupPrice).replace(soupPrice.text,str(price))
print(new_price)

输出:

<span class="rec-item-cost">7.12</span>
另一答案

根据documentation,您可以使用replaceWith

from bs4 import BeautifulSoup as bs

html = '''<span class="rec-item-cost">0.00</span'''
soup = bs(html, 'lxml')
price = '7.12'
soup.select_one('.rec-item-cost').contents[0].replaceWith(price)
print(soup)

以上是关于如何在BeautifulSoup中的标签之间替换文本?的主要内容,如果未能解决你的问题,请参考以下文章

BeautifulSoup - 如何获取两个不同标签之间的所有文本?

如何使用BeautifulSoup访问标签的属性值

BeautifulSoup:在定义的h2标签之间拉p标签

使用 BeautifulSoup 提取标签之间的文本

如何在 python 中使用 beautifulsoup4 来抓取标签中的内容

如何通过beautifulsoup中的“class”属性捕捉标签? [复制]