2013-10-13 3 views
10

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

<p class="review_comment"> 

Таким образом, с помощью простого кода следующим образом,

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

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

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

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

<p class="review_comment"> 
    It's 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".

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

+0

В «плохом совпадении новостей» это только тег и содержимое, которые вы не хотите, или хотите отклонить весь P? – msw

+1

Да, «плохой новостной матч» - это старый обзор, и я хочу отказаться от всего этого. Одной из основных причин этого является то, что я также очистил информацию «# звезд», но неожиданно у меня больше отзывов, чем у звезд. –

+0

Знаете ли вы о специальном способе написания [class_] (http://www.crummy.com/software/BeautifulSoup/bs4/doc/#searching-by-css-class) в файле soup.find()? – msw

ответ

8

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

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

Это стратегия, которую мне нужно использовать, да. Это простой вопрос использования правильной петли. Спасибо за помощь @msw! –

Смежные вопросы