Python -beautifulsoup, если тег с указанным классом c, не содержит тег с указанным классом c, печатать содержимое другого тега с указанным классом c - PullRequest
0 голосов
/ 01 мая 2020

Хорошо.

Я получил список предметов, некоторые из них имеют дополнительные div и a. Я хочу отфильтровать элементы так, чтобы я видел только те без дополнительного div и a.

Я получил следующий код.

<!-- ITEM 1 -->

<div id="position0001">
 <a class="ignoreThis"></a>
 <div class="contentsAreInside">
  <section class="dontNeed"></section>
  <section class="nameIsInsideHere">
   <div class="moreInside">
   <div>
   <a href="#" class="printThis">IF CLASS "checkIfThisExists" EXISTS DONT PRINT THIS OUT</a>
   </div>
   <div>...</div>
   </div>
   <div>...</div>
 </section>
 <div>...</div>
 <section></section>
 <section></section>
 <section></section>
 <div></div>
 <div class="itsInside">
  <div class="deeper">
   <a href="#" class="checkIfThisExists">IF THIS "checkIfThisExists" CLASS EXISTS DONT PRINT OUT THE CONTENTS OF ANCHOR ABOVE</a>
  </div>
 </div>
</div>

<!-- ITEM 2 -->

<div id="position0002">
 <a class="ignoreThis"></a>
 <div class="contentsAreInside">
  <section class="dontNeed"></section>
  <section class="nameIsInsideHere">
   <div class="moreInside">
   <div>
   <a href="#" class="printThis">IF CLASS "checkIfThisExists" EXISTS DONT PRINT THIS OUT</a>
   </div>
   <div>...</div>
   </div>
   <div>...</div>
 </section>
 <div>...</div>
 <section></section>
 <section></section>
 <section></section>
 <div></div>
 <div class="itsInside">
  <!-- no class "deeper" -->
   <!-- no class "checkIfThisExists" -->

 </div>
</div>

Я пробовал много вещей, таких как использование для х в у, если х, если х == Истина, если х не в у ... Но это не работает. В большинстве случаев он печатает список всех элементов.

Элементы с дополнительными элементами div и a всегда находятся в первых точках, и это зависит от того, сколько их там.

Вот мой код, так далеко.

import re
import requests
import bs4
from bs4 import BeautifulSoup

site = requests.get("insert url here")

soup = bs4.BeautifulSoup(site.text, "lxml")

foundExtraCode = soup.find_all('div', id=re.compile("^position\d+"))

После этого я пытаюсь точно указать, в каких элементах div я нуждаюсь, с помощью find и find_all.

Мне нужно:

-Найдите все элементы, отмеченные идентификатором positionXXXXX

-Проверьте каждый из них, проверьте, есть ли у них class = "checkIfThisExists"

-Если он есть, пропустите его

-Если у них нет этого, напечатайте содержимое class = "printThis"

Также я добавлю это позже, но сканирование элементов должно быть выполнено через многопоточность каждые X времени. Если у вас есть свободное время, пожалуйста, ударь меня тоже. Я должен был go спать 4 часа go. Увидим ответы утром.

Спасибо за ваше время.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...