我正在阅读BeautifulSoup,以屏幕显示一些非常重的html页面。通过BeautifulSoup的文档,我似乎无法找到一种简单的方法来选择子元素。
鉴于html:
<div id="top">
<div>Content</div>
<div>
<div>Content I Want</div>
</div>
</div>
我想要一个简单的方法来获得“我想要的内容”,因为我有对象顶部。来到BeautifulSoup我认为这很容易,比如topobj.nodes [1] .nodes [0] .string。相反,我只看到变量和函数,它们还将元素与文本节点,注释等一起返回。
我错过了什么吗?或者我真的需要使用.find()或使用.contents变量上的列表组合来使用长格式。
原因是我不相信网页的空白是相同的,所以我想忽略它并且只遍历元素。
答案 0 :(得分:2)
您对find
更灵活,并且只需要运行您想要的内容:
node = p.find('div', text="Content I Want")
但是因为它可能不是你想要如何,所以以下选项可能更适合你:
xml = """<div id="top"><div>Content</div><div><div>Content I Want</div></div></div>"""
from BeautifulSoup import BeautifulSoup
p = BeautifulSoup(xml)
# returns a list of texts
print p.div.div.findNextSibling().div.contents
# returns a list of texts
print p.div.div.findNextSibling().div(text=True)
# join (and strip) the values
print ''.join(s.strip() for s in p.div.div.findNextSibling().div(text=True))