要创建任何标签或NavigableString的副本,可以使用Python标准库中的copy
模块提供的copy()
函数。
示例
from bs4 import BeautifulSoup
import copy
markup = "<p>Learn <b>Python, Java</b>, <i>advanced Python and advanced Java</i>! from Yoagoa</p>"
soup = BeautifulSoup(markup, "html.parser")
i1 = soup.find('i')
icopy = copy.copy(i1)
print(icopy)
输出
<i>advanced Python and advanced Java</i>
尽管两个副本(原始和复制的)包含相同的标记,但是它们不代表同一个对象。
print(i1 == icopy)
print(i1 is icopy)
输出
True
False
复制的对象完全脱离了原始的Beautiful Soup对象树,就好像在它上面调用了extract()
一样。
print(icopy.parent)
输出
None