所以我试图通过只返回段落和列表标签来解析一些HTML,这很容易。以下是我到目前为止所做的一个例子:
def main():
soup = BeautifulSoup(html, 'html.parser').find_all()
print "output:"
for tag in soup:
if tag.name == 'p':
print tag.text # Text to be used to create a RichText object
elif tag.name == 'li':
print tag.text # Text to be used to create a RichText object
HTML:
"<html><body><p><p>INSIDE TAG</p></p><ul><li>LIST1</li><li>LIST2</li></ul><p>OUTSIDE TAG</p></body></html> "
输出:
INSIDE TAG
INSIDE TAG
LIST1
LIST2
OUTSIDE TAG
正如你所看到的,如果一个标签包含另一个相同类型的标签,在这个例子中是一个段落,它会被重复,我想知道是否有更好的方法来避免这种情况发生?主要问题是它可能是任何可能发生这种情况的标记,因为我无法控制输入HTML。非常感谢
答案 0 :(得分:1)
for tag in soup:
if tag.name == 'p' and tag.parent.name !='p':
print tag.text # Text to be used to create a RichText object
elif tag.name == 'li':
print tag.text # Text to be used to create a RichText object
您可以检查代码的父母名称以对其进行过滤