Получить переменное имя класса python BeautifulSoup - PullRequest
1 голос
/ 04 мая 2020

Я пытаюсь получить переменное имя класса с Python и BeautifulSoup, которое является дочерним элементом панели классов, но находится в 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 ниже? Я могу получить к нему доступ как к списку, но не к строке:

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

Есть идеи?

Ответы [ 3 ]

0 голосов
/ 05 мая 2020

Используйте 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<===']
0 голосов
/ 05 мая 2020
x = soup.find('div', class_="bar")
print (*x.div['class'])

- это ответ, который я искал. Большое спасибо всем, кто внес свой вклад!

0 голосов
/ 05 мая 2020

Это то, что вы ищете?

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)
...