Как получить данные из атрибута с разными значениями?

С помощью bs4 нужно получить текст из div с тегом “id”. У тега «id» значение может быть 1, 2 или 3. Нужно получить текст, если он равен 1 или 3

Кусок html кода, который повторяется с разными значениями:

<div class="group" id="1">
<b class="subjectClass">Нач.</b> ОРВ  <br/> Не опознано <br/>  В процессе

            <br/></div>

Пробовал: a = soup.find_all(“div”, id=“1” or “3”)


Ответы (2 шт):

Автор решения: Sergey Derevianko
for tag in soup.find_all(class_="group") :
  id_value = tag.attrs.get("id")
  if id_value and id_value  in ('1', '2'):
      print(tag.contents[0])
→ Ссылка
Автор решения: Namerek

В вашем варианте никак потому что:

Необязательные открывающие теги

Тег Когда можно не писать
<html> Если перед ним не идет <!-- комментарий -->
<head> Если перед ним не идет <!-- комментарий -->
<body> Если body начинается не с <!-- комментария -->, пробела, либо одного из тегов, который может быть и в head
<tbody> Перед <tr>, если перед ним нет незакрытого thead, tfoot или другого tbody
<colgroup> Перед <col>, если перед ним нет незакрытого другого colgroup

Необязательные закрывающие теги

Тег Когда можно не писать
</html> Если после него не идет <!-- комментарий -->
</head> Если после него не идет <!-- комментарий --> или пробел
</body> Если после него не идет <!-- комментарий -->
</li> Перед <li> или </ul>/</ol>
</dt> Перед <dt> или <dd>
</dd> Перед <dt>, <dd> или концом родителя
</p> Перед открывающим тегом любого не-фразового потокового («блочного» по-старому:) элемента, либо закрывающим тегом родительского элемента (если у того не прозрачная модель контента)
</rt> и </rp> Перед <rt>, <rp> или </ruby>
</optgroup> Перед <optgroup> или </select>
</option> Перед <option>, <optgroup>, </optgroup> или </select>
</colgroup> Если после него не идет <!-- комментарий --> или пробел
</caption> Если после него не идет <!-- комментарий --> или пробел
</thead> Перед <tbody> или <tfoot>
</tbody> Перед другим <tbody>, <tfoot> или </table>
</tfoot> Перед </table>
</tr> Перед <tr> или концом родителя
</td> и </th> Перед <td>, <th> или концом родителя

В связи с вышеизлоенным приведите Ваш html к нормальному виду (тэги закройте)

<div class="group" id="1">
<b class="subjectClass">Нач.</b> ОРВ  <br/> Не опознано <br/>  В процессе

            <br/></div>
<div class="group" id="2">
<b class="subjectClass">Нач.</b> ОРВ  <br/> Не опознано <br/>  В процессе

            <br/></div>
            <div class="group" id="3">
            <b class="subjectClass">Нач.</b> ОРВ  <br/> Не опознано <br/>  В процессе
            
                        <br/></div>

from bs4 import BeautifulSoup as Soup

text = """

<div class="group" id="1">
<b class="subjectClass">Нач.</b> ОРВ  <br/> Не опознано <br/>  В процессе

            <br/></div>
<div class="group" id="2">
<b class="subjectClass">Нач.</b> ОРВ  <br/> Не опознано <br/>  В процессе

            <br/></div>
            <div class="group" id="3">
            <b class="subjectClass">Нач.</b> ОРВ  <br/> Не опознано <br/>  В процессе
            
                        <br/></div>
"""
soup = Soup(text, 'html.parser')

print(
    soup.find_all(
        id=re.compile(r'[13]')
    )
)
# Или так
print(
    soup.find_all(
        id=lambda x: x in ['1', '3']
    )
)

[<div class="group" id="1">
<b class="subjectClass">Нач.</b> ОРВ  <br/> Не опознано <br/>  В процессе

            <br/></div>, <div class="group" id="3">
<b class="subjectClass">Нач.</b> ОРВ  <br/> Не опознано <br/>  В процессе
            
                        <br/></div>]
→ Ссылка