2015-06-15 3 views
-1

Вот мой код:BeautifulSoup: TypeError: «юникода» объект не вызываемая

v_card = soup.find('div', {'class':'col subgroup vcard'}) 
if v_card is not None : 
    print v_card.prettify() 
    infos = v_card.findAll('li') 
    print infos[0].text() 

Вот вывод:

<div class="col subgroup vcard"> 
<ul> 
<li> 
    infos I need to get 
</li> 
<li> 
    infos I need to get 
</li> 
<li> 
</li> 
</ul> 
</div> 

Traceback (most recent call last): 
    File "./xxxx.py", line 43, in <module> 
    print infos[0].text() 
TypeError: 'unicode' object is not callable 

Обратите внимание, что если удалить метод .text(), то он печатает успешнее <li> тег и его содержание.

Это странно, потому что с другими элементами у меня нет проблем с использованием .text(), я не понимаю, никаких объяснений?

ответ

4

.text - это атрибут, возвращающий содержащийся текст узла. Это не отозваны, просто использовать его напрямую:

print infos[0].text 

Вы, возможно, получили путать с Element.get_text() method здесь; доступ к атрибуту .text в основном та же самая, что и вызов .get_text() без каких-либо аргументов.

+0

Doh, глупая ошибка, которая могла бы заставить меня задуматься навсегда ... Спасибо человеку. –

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