有没有办法用 Python 解析 html 标签?

Is there a way to parse html tags with Python?

我需要解析几个 HTML 标签。

示例: 我需要转:

<div class="title">
     <h1> Hello World </h1>
</div>

进入

['<div class="title">', '<h1> Hello World </h1>', '</div>']

您可以使用拆分方式 ('><')

并再次将“><”添加到列表

中的字符串

您可以使用递归生成器函数 BeautifulSoup:

import bs4
from bs4 import BeautifulSoup as soup
s = """
<div class="title">
   <h1> Hello World </h1>
</div>
"""
def get_tags(d):
   ats = " ".join(a+"="+f'"{(b if not isinstance(b, list) else " ".join(b))}"' for a, b in d.attrs.items())
   h = f'<{d.name} {ats}>' if ats else f'<{d.name}>'
   if (k:=[i for i in d.contents if isinstance(i, bs4.element.Tag)]):
      yield h
      yield from [j for l in k for j in get_tags(l)]
      yield f'</{d.name}>'
   else:
      yield f'{h}{d.text}</{d.name}>'

print(list(get_tags(soup(s, 'html.parser').contents[1])))

输出:

['<div class="title">', '<h1> Hello World </h1>', '</div>']