Исключение нежелательных результатов findAll с помощью BeautifulSoup

Используя BeautifulSoup, я пытаюсь очистить текст, связанный с этим HTML-крючком:

<p class="review_comment">

Итак, используя простой код следующим образом:

content = page.read()  
soup = BeautifulSoup(content)  
results = soup.find_all("p", "review_comment")

Я счастливо разбираю текст, который здесь живет:

<p class="review_comment">
    This place is terrible!</p>

Плохая новость заключается в том, что каждые 30 или около того времени, когда soup.find_all получает соответствие, он также сопоставляет и захватывает то, чего я действительно не хочу, это старый пользовательский обзор, который они обновили:

<p class="review_comment">
    It 1999, and I will always love this place…  
<a href="#" class="show-archived">Read more &raquo;</a></p>

В моих попытках исключить эти старые дублированные обзоры, я попробовал мешанину идей.

  • Я пытаюсь изменить аргументы в моем вызове soup.find_all() чтобы исключить любой текст, который предшествует <a href="#" class="show-archived">Read more &raquo;</a>
  • Я утонул в регулярном выражении, совпадающем с неопределенностью, без успеха.
  • Я не могу использовать атрибут class="show-archived".

Любые идеи будут с благодарностью оценены. Спасибо заранее.

Ответ 1

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

for p in soup.find_all("p", "review_comment"):
    if p.find(class_='show-archived'):
        continue
    # p is now a wanted p