使用 Beautiful Soup 获取所有 HTML 标签

新手上路,请多包涵

我正在尝试从漂亮的汤中获取所有 html 标签的列表。

我看到 find all 但在搜索之前我必须知道标签的名称。

如果有像这样的文字

html = """<div>something</div>
<div>something else</div>
<div class='magical'>hi there</div>
<p>ok</p>"""

我怎样才能得到像这样的清单

list_of_tags = ["<div>", "<div>", "<div class='magical'>", "<p>"]

我知道如何使用正则表达式执行此操作,但我正在尝试学习 BS4

原文由 humanbeing 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 704
2 个回答

您不必为 find_all() 指定任何参数 - 在这种情况下, BeautifulSoup 会递归地找到树中的每个标签。

样本:

 from bs4 import BeautifulSoup

html = """<div>something</div>
<div>something else</div>
<div class='magical'>hi there</div>
<p>ok</p>
"""
soup = BeautifulSoup(html, "html.parser")

print([tag.name for tag in soup.find_all()])
# ['div', 'div', 'div', 'p']

print([str(tag) for tag in soup.find_all()])
# ['<div>something</div>', '<div>something else</div>', '<div class="magical">hi there</div>', '<p>ok</p>']

原文由 alecxe 发布,翻译遵循 CC BY-SA 4.0 许可协议

请尝试以下–

 for tag in soup.findAll(True):
    print(tag.name)

原文由 Anjan 发布,翻译遵循 CC BY-SA 4.0 许可协议

推荐问题