我想更改使用 Beautifulsoup 获得的 HTML 中标签的内部文本。
示例:
<a href="index.html" id="websiteName">Foo</a>
变成:
<a href="index.html" id="websiteName">Bar</a>
我已经设法通过其 id 获取标签:
HTMLDocument.find(id='websiteName')
但是我无法更改标签的内部文本:
print HTMLDocument.find(id='websiteName')
a = HTMLDocument.find(id='websiteName')
a = a.replaceWith('<a href="index.html" id="websiteName">Bar</a>')
// I have tried using this as well
a = a.replaceWith('Bar')
print a
输出:
<a href="index.html" id="websiteName">Foo</a>
<a href="index.html" id="websiteName">Foo</a>
你几乎成功了!问题出在
replaceWith
方法上。你需要修改标签的
.string
属性。
试试这段代码:
from bs4 import BeautifulSoup
html = '<a href="index.html" id="websiteName">Foo</a>'
soup = BeautifulSoup(html, 'html.parser')
tag = soup.find(id='websiteName')
tag.string = 'Bar'
print(soup)
解释:
-
tag.string = 'Bar'
: 这行代码是关键所在。它直接修改标签内部的文本。tag.string
属性表示标签内的文本内容。通过将其设置为 'Bar',你有效地替换了之前的文本 'Foo'。 -
print(soup)
: 这行代码打印修改后的整个 BeautifulSoup 对象,显示更新后的 HTML。
通过这种方式,你就能成功地使用 Beautiful Soup 更改 HTML 标签内的文本内容。
标签:python,beautifulsoup From: 47024877