我正在尝试从以下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'。我做错了什么?
答案 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)
NavigableString就像Python Unicode字符串,除了它 还支持导航树中描述的一些功能 并搜索树。您可以将NavigableString转换为Unicode 字符串与unicode()