如何找到&使用Beautiful Soup更改标签之外的文本?

时间:2017-08-18 13:16:17

标签: python python-3.x beautifulsoup

我有一个这样的文件:

words1 outside of a Tag <tag1> words2 inside of tag1 </tag1> words3 outside of a Tag

我想在tag1之外提取字符串,然后使用beautifulsoup将其更改为:

changed word1 <tag1> words2 inside of tag1 </tag1> changed word3

如何用beautifulSoup替换标签中的单词?

1 个答案:

答案 0 :(得分:2)

文本元素也被视为父元素的子元素。

如果找到tag1,您可以在属性.previousSibling.nextSibling中找到之前和之后的文字。或者,您可以找到父标记,然后选择适当的子标记。

示例:

from bs4 import BeautifulSoup
# assuming BeautifulSoup 4

doc = """
words1 outside of a Tag <tag1>words2 inside of tag1</tag1>
words3 outside of a Tag
"""

soup = BeautifulSoup(doc, 'html.parser')
tag = soup.find('tag1')
tag.previousSibling.replaceWith('changed word1 ')
tag.nextSibling.replaceWith(' changed word3')

print(soup)