Python Beautiful Soup 'NavigableString' объект не имеет атрибута get_text - PullRequest
0 голосов
/ 05 июня 2018

Я пытаюсь извлечь текст из следующей структуры html:

<div class="account-places">
    <div>
        <ul class="location-history">
            <li></li>
            <li>Text to extract</li>
        </ul>
    </div>
</div>

У меня есть следующий код BeautifulSoup, чтобы сделать это:

from bs4 import BeautifulSoup as bs

soup = bs(html, "lxml")
div = soup.find("div", {"class": "account-places"})
text = div.div.ul.li.next_sibling.get_text()

Но Beautiful Soupвыдает ошибку: объект 'NavigableString' не имеет атрибута 'get_text'.Что я делаю не так?

Ответы [ 2 ]

0 голосов
/ 05 июня 2018

Поскольку вызов next_sibling возвращает NavigableString, вы должны следовать этому синтаксису:

text = unicode(div.div.ul.li.next_sibling)

Чтобы процитировать документацию :

ANavigableString похожа на строку Юникода Python, за исключением того, что она также поддерживает некоторые функции, описанные в Навигации по дереву и Поиске по дереву.Вы можете преобразовать NavigableString в строку Unicode с помощью unicode ()

0 голосов
/ 05 июня 2018

Похоже, вам нужно find_next_sibling("li").

Пример:

from bs4 import BeautifulSoup as bs

soup = bs(html, "lxml")
div = soup.find("div", {"class": "account-places"})
text = div.div.ul.li.find_next_sibling("li").get_text()
print(text)

Вывод:

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