我有一个类似这样的HTML文档:
<div class = "Group"> Group 1 </div>
<div class = "item"> Item 1 </div>
<div class = "Group"> Group 2 </div>
<div class = "item"> Item 2 </div>
<div class = "item"> Item 3 </div>
我想创建属于组组元素的每个项目的列表:
Group 1: [Item 1]
Group 2: [Item 2, Item 3]
通常很容易做到这一点,但我不确定当元素没有准确嵌套时如何处理。我只需要选择只出现在元素下面的HTML,但不知道如何做到这一点。
答案 0 :(得分:2)
尽管可以使用re
或其他方法完成,但html解析需要合适的库
使用bs4
:
from bs4 import BeautifulSoup
html = '''
<div class = "Group"> Group 1 </div>
<div class = "item"> Item 1 </div>
<div class = "Group"> Group 2 </div>
<div class = "item"> Item 2 </div>
<div class = "item"> Item 3 </div>
'''
soup = BeautifulSoup(html, 'lxml')
data = {}
key = None
for i in soup.find_all('div'):
if 'Group' in i.get('class'):
key = i.text.strip()
data[key] = []
elif key:
data[key].append(i.text.strip())
print(data)
{'Group 2': ['Item 2', 'Item 3'], 'Group 1': ['Item 1']}