获取可变的 python BeautifulSoup class 名称

Get a python BeautifulSoup class name that is variable

我正在尝试使用 Python 和 BeautifulSoup 获取变量 class-name,它是 class 栏的子项,但位于div.

<div class="foo">
    <div class="bar">
        <div class="===>THIS IS THE CLASSNAME I WANT TO GET<===">
            <canvas ...></canvas>
<div class="bar2">
<div class="bar3">

我得到 "bar" 元素没有任何问题:

x = item.find('div', class_="bar")

但是如何从下面的 div 访问 class 名称?我可以将其作为列表访问,但不能作为字符串访问:

print(x.div.attrs)
> {'class': ['===>THIS'], [IS], [THE], [CLASSNAME], [I], [WANT], [TO], [GET<===],}

有什么想法吗?

这是您要找的吗?

x = soup.find('div', class_="bar")
print (*x.div['class'])

或者,如果您希望它在变量中:

x = soup.find('div', class_="bar")
l = x.div['class']
s = " ".join(l) 
print (s)

使用select('div.bar > div:nth-of-type(1)')

例子

from bs4 import BeautifulSoup

html = """ 
<div class="foo">
<div class="bar">
<div class="===>THIS IS THE CLASSNAME I WANT TO GET<===">
<canvas ...></canvas>
<div class="bar2">
<div class="bar3">
"""

soup = BeautifulSoup(html, features='html.parser')

for element in soup.select('div.bar > div:nth-of-type(1)'):
    print(element["class"])

版画

['===>THIS', 'IS', 'THE', 'CLASSNAME', 'I', 'WANT', 'TO', 'GET<===']
x = soup.find('div', class_="bar")
print (*x.div['class'])

是我一直在寻找的答案。非常感谢所有贡献者!