2013-01-20 3 views
2

Я пытаюсь найти все теги p с классом column.beautifulsoup find_all() ярлык класса не работает

<p class="column">This is a column</p> 
<p class="column">More columns heh</p> 

Я попытался сделать:

soup.find_all(class_='column') 

который вернулся []

Тогда я попробовал:

soup.find_all(attrs={'class': 'column'}) 

и получил правильные результаты.

Не должны ли эти два утверждения быть идентичными? Какая разница?

+0

В какой версии вы работаете? –

+0

версия 4.1.0 –

+0

Такая же проблема. Такая же версия. – asheeshr

ответ

0

Высказывания являются точно идентичны, и я не был в состоянии воспроизвести проблему:

>>> from bs4 import BeautifulSoup 
>>> soup = BeautifulSoup('''<div> 
... <p class="column">This is a column</p> 
... <p class="column">More columns heh</p> 
... </div>''') 
>>> soup.find_all(class_='column') 
[<p class="column">This is a column</p>, <p class="column">More columns heh</p>] 
>>> import bs4 
>>> bs4.__version__ 
'4.1.3' 
+0

Очень странно, я просто использовал ваш точный код и получил '>>> soup.find_all (класс _ = 'column') []' –

0
>>> from bs4 import BeautifulSoup as BS 
>>> soup = BS('''<p class="column">This is a column</p> 
<p class="column">More columns heh</p>''') 
>>> list1 = soup.find_all(class_='column') 
>>> list2 = soup.find_all(attrs={'class': 'column'}) 
>>> list1 == list2 
True 

Там нет никакой разницы. Я не уверен, почему он не работает для вас. Может быть, ваш модуль BeautifulSoup устарел? Я также не смог воспроизвести вашу проблему.

+0

Это действительно странно. Возможно, моя установка просто повреждена, я попробую переустановить ее. –

0

у меня спасти ситуацию, как ваш пост, и я узнаю, что мой CentOS питона версии 2.6.6 и 4.1.0 BeautifulSoup они говорят в их помощи док:

«Примеры в данной документации, должен работать аналогично в Python 2.7 и Python 3.2 ».

Так что я обновить питона 2,6 до 2,7, по этой ссылке:

«http://toomuchdata.com/2014/02/16/how-to-install-python-on-centos/»

После обновления закончена, суп стал красивым.

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