@hey_umbrella

Как брать текст только из одного тега в bs4?

<math-input id="m7275895MI1" keyboard-skin="junior" keyboard-type="base" strict-check="false">
  <math-input-answer>2</math-input-answer>
  <math-input-answer>-2</math-input-answer>
</math-input> и 
<math-input id="m7275895MI2" keyboard-skin="junior" keyboard-type="base" strict-check="false">
  <math-input-answer>2</math-input-answer>
  <math-input-answer>-2</math-input-answer>
</math-input>.</p>


Как мне брать из math-input только один math-input-answer? Сейчас мой скрипт выдает 2,-2 2,-2,а мне нужно 2,-2 разницы нет из первого или второго.Я пытался поменять на просто find,но тогда он берет только самый первый и пропускает второй math-input

for i in soup.find_all('math-input-answer'):
     results.append(i.text)
  • Вопрос задан
  • 83 просмотра
Решения вопроса 2
@hey_umbrella Автор вопроса
Проблему решил так,может кому надо
for i in soup.find_all('math-input'):
            j = i.find('math-input-answer')
            results.append(j.text)
Ответ написан
Комментировать
@sunsexsurf
IT & creative
Есть четыре варианта (хотя, идейно они все похожи):
1/ вы собираете все i в список, потом берёте i[0] (либо bs, либо регулярками)
2/ вы прерываете цикл после первого i (через брейк или try / except)
3/ вы ищете не через find_all, а просто через find
4/ вы собираете все в set(). Если все элементы были одинаковые set будет состоять из 1 элемента
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы