<tr id="section_1asd8aa" class="main">
<td class="header">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td style="font-family: arial,sans-serif; font-size: 11px;>DUMMY TEXT<a href="#">browser.</a>
</td>
</tr>
</tbody>
</table>
</td></tr>
上面是一个示例html,我想从html文件中提取所有类名。 输出:'{“c1”:“main”,“c2”:“header”}'
答案 0 :(得分:2)
您可以使用find_all
获取一组节点,然后遍历节点集并检查节点是否具有class
属性,如果有,则返回该类:
from bs4 import BeautifulSoup
soup = BeautifulSoup("""<tr id="section_1asd8aa" class="main">
<td class="header">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td style="font-family: arial,sans-serif; font-size: 11px;>DUMMY TEXT<a href="#">browser.</a>
</td>
</tr>
</tbody>
</table>
</td></tr>""", "html.parser")
获取类名列表:
lst = [node['class'] for node in soup.find_all() if node.has_attr('class')]
lst
# [['main'], ['header']]
将列表转换为字典:
{"c"+str(i): v for i, v in enumerate(lst)}
# {'c0': ['main'], 'c1': ['header']}
请注意,类包含在列表中,因为某些类可以有多个值。如果需要,您可以将列表作为单个字符串加入。
{"c"+str(i): " ".join(v) for i, v in enumerate(lst)}
# {'c0': 'main', 'c1': 'header'}