使用Beautifulsoup更新HTML中包含<img>标记的<p>标记中的文本

时间:2019-11-28 07:12:05

标签: python html beautifulsoup

我有以下Beautifulsoup HTML标签,我想将标签中的文本TEXT TO BE UPDATED更新为SOMETHING ELSE

<p><img src="./img.jpg"> TEXT TO BE UPDATED.</p>

让我们说上面<p>标签的Beautifulsoup对象是p_tag。我尝试使用p_tag.string.replace_with('SOMETHING ELSE'),但因为p_tag.string总是返回None,所以它不起作用。知道为什么会发生吗?

1 个答案:

答案 0 :(得分:0)

您需要使用p_tag.text来获取文本,并使用p_tag.string来设置新文本。

像这样:

source = '<p><img src="./img.jpg"> TEXT TO BE UPDATED.</p>'
bsoup = BeautifulSoup(source, 'html.parser')
p_tag = bsoup.p

old_text = p_tag.text
new_text = p_tag.img.text + ' Something new'
p_tag.string = new_text
print(p_tag.prettify())
#  prints `<p><img src="./img.jpg"> Something new </p>`