Beautifulsoup获取类名

若要获取Beautifulsoup中元素的类名,需要使用以下语法:

element['class']

通过使用此语法,我们将学习如何:

  • 获取元素的类名
  • 获取元素的多类名称
  • 获取多元素的类名

内容

获取元素的类名

在下面的示例中,我们将获取 div 元素的类名

from bs4 import BeautifulSoup # ?️ Import BeautifulSoup module


# ? HTML Source
html = '''

<div class="node">
<p>Hello Beautifulsoup</p>
</div>

'''

soup = BeautifulSoup(html, 'html.parser') # ?️ Parsing

el = soup.find("div") # ?️ Find <div>

div_class = el['class'] # ?️ Get div class name

print(div_class) # ?️ Print Result

输出:

['node']

如您所见,我们将结果作为列表获得,因为一个元素可能包含多个类名。如果要获取列表中的类名,请按照下面的代码操作。

if div_class: # ?️ Check if DIV has a class attr
    print(div_class[0]) # ?️ Print Class name

输出:

node

我们使用了 if 条件,因为如果元素没有 class 属性,我们将收到错误。但是,您可以在 find() 函数中设置 class_=True 参数,而不是 if 条件。

通过设置 class_=True 参数,我们告诉函数我们要查找具有类属性的元素。

# ? HTML Source
html = '''

<div class="node">
<p>Hello Beautifulsoup</p>
</div>

'''

soup = BeautifulSoup(html, 'html.parser') # ?️ Parsing

el = soup.find("div", class_=True) # ?️ Find <div>

div_class = el['class'] # ?️ Get div class name

print(div_class[0]) # ?️ Print Class name

输出:

node

获取元素的多类名称

在下面的示例中,我们将了解如何使用具有多类名称的元素。

# ? HTML Source
html = '''

<div class="node text fav">
<p>Hello Beautifulsoup</p>
</div>

'''

soup = BeautifulSoup(html, 'html.parser') # ?️ Parsing

el = soup.find("div") # ?️ Find <div>

div_class = el['class'] # ?️ Get div class name

print(div_class) # ?️ Print Result

输出:

['node', 'text', 'fav']

现在,让我们打印每个类名。

# # ? Print each class name
for _class in div_class:
    print(_class)

输出:

node
text
fav 

获取多元素的类名

下面的示例将说明如何获取多元素的类名。

# ? HTML Source
html = '''

<div class="node">
<p>Hello Beautifulsoup</p>
</div>

<div class="node_1">
<p>Hello Beautifulsoup</p>
</div>


<div class="node_2">
<p>Hello Beautifulsoup</p>
</div>


<div>
<p>Hello Beautifulsoup</p>
</div>

'''

soup = BeautifulSoup(html, 'html.parser') # ?️ Parsing

els = soup.find_all("div", class_=True) # ?️ Find all <div> tags with existing class attr

for el in els: # ?️ Loop over els
    print(el['class']) # ?️ Print Class name

输出:

['node']
['node_1']
['node_2']

结论

我们已经介绍了有关从元素或多元素获取类名的所有内容。有关更多美比特福汤主题,请向下滚动并快乐学习。

本教程的示例可在 GitHub 上找到