replaceWith
方法抽出一个页面元素并将其替换为一个不同的元素。
新元素可以为一个Tag
(它可能包含一个剖析树)或者NavigableString
。
如果你传一个字符串到replaceWith
, 它会变为NavigableString
。
这个Navigation成员会完全融入到这个剖析树中,就像它本来就存在一样。
下面是一个简单的例子:
The new element can be aTag
(possibly with a
whole parse tree beneath it) or a NavigableString
. If you pass a
plain old string into replaceWith
, it gets turned into a NavigableString
. The navigation members are changed as though the
document had been parsed that way in the first place.
Here's a simple example:
from BeautifulSoup import BeautifulSoup soup = BeautifulSoup("<b>Argh!</b>") soup.find(text="Argh!").replaceWith("Hooray!") print soup # <b>Hooray!</b> newText = soup.find(text="Hooray!") newText.previous # <b>Hooray!</b> newText.previous.next # u'Hooray!' newText.parent # <b>Hooray!</b> soup.b.contents # [u'Hooray!']
这里有一个更复杂点的,相互替换标签(tag)的例子:
from BeautifulSoup import BeautifulSoup, Tag soup = BeautifulSoup("<b>Argh!<a>Foo</a></b><i>Blah!</i>") tag = Tag(soup, "newTag", [("id", 1)]) tag.insert(0, "Hooray!") soup.a.replaceWith(tag) print soup # <b>Argh!<newTag id="1">Hooray!</newTag></b><i>Blah!</i>
You can even rip out an element from one part of the document and
stick it in another part:
你也可以将一个元素抽出然后插入到文档的其他地方:
from BeautifulSoup import BeautifulSoup text = "<html>There's <b>no</b> business like <b>show</b> business</html>" soup = BeautifulSoup(text) no, show = soup.findAll('b') show.replaceWith(no) print soup # <html>There's business like <b>no</b> business</html>