Python Beautiful Soup'NavigableString'对象没有属性'get_text'

时间:2018-06-05 16:58:52

标签: python beautifulsoup

我正在尝试从以下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()

但是美丽的汤正在抛出错误:'NavigableString'对象没有属性'get_text'。我做错了什么?

2 个答案:

答案 0 :(得分:2)

您似乎需要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

答案 1 :(得分:1)

由于next_sibling调用返回NavigableString,您必须遵循以下语法:

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

引用the documentation

  

NavigableString就像Python Unicode字符串,除了它   还支持导航树中描述的一些功能   并搜索树。您可以将NavigableString转换为Unicode   字符串与unicode()