在使用append()方法时,应该使用copy()方法复制一份BeautifulSoup对象,并对复制的对象进行append操作。代码示例如下:
from bs4 import BeautifulSoup
html = """
Paragraph 1
Paragraph 2
"""
soup = BeautifulSoup(html, 'html.parser')
div1 = soup.find('div', {'id': 'div-1'}) # 找到id为div-1的div标签
p1 = soup.new_tag('p') # 创建一个新的p标签
p1.string = 'Paragraph 3' # 设置p标签的文本
div1.append(p1) # 将新的p标签加入到id为div-1的div标签中
# 错误的方式:在原BeautifulSoup对象上调用find()方法
div2 = soup.find('div', {'id': 'div-2'}) # 报错,无法找到id为div-2的div标签
# 正确的方式:复制一个BeautifulSoup对象并对复制的对象进行操作
new_soup = BeautifulSoup(str(soup), 'html.parser')
div2 = new_soup.find('div', {'id': 'div-2'}) # 在复制的对象上找到id为div-2的div标签
print(div1)
print(div2)
输出结果如下:
Paragraph 1
Paragraph 3
Paragraph 2