我试图将一个
HTML字符串插入到BeautifulSoup对象中.如果我直接插入它,bs4清理html.如果使用html字符串并从中创建一个汤,并插入我使用find函数时遇到问题.
This post thread on SO表明插入BeautifulSoup对象可能会导致问题.我正在使用该帖子的解决方案,并在每次插入时重新创建汤.
但肯定有更好的方法将html字符串插入汤中.
编辑:我将添加一些代码作为问题的一个例子
from bs4 import BeautifulSoup
mainSoup = BeautifulSoup("""
""")
extraSoup = BeautifulSoup('')
tag = mainSoup.find(class_='first')
tag.insert(1, extraSoup)
print mainSoup.find(class_='second')
# prints None
最佳答案 最简单的方法,如果你已经有一个html字符串,就是插入另一个BeautifulSoup对象.
from bs4 import BeautifulSoup
doc = '''
test1
'''
soup = BeautifulSoup(doc, 'html.parser')
soup.div.append(BeautifulSoup('
print soup.prettify()
输出:
test1
insert1
更新1
这个怎么样?想法是使用BeautifulSoup生成正确的AST节点(span标记).看起来这样可以避免“无”问题.
import bs4
from bs4 import BeautifulSoup
mainSoup = BeautifulSoup("""
""", 'html.parser')
extraSoup = BeautifulSoup('', 'html.parser')
tag = mainSoup.find(class_='first')
tag.insert(1, extraSoup.span)
print mainSoup.find(class_='second')
输出: