【发布时间】:2017-02-16 05:50:06
【问题描述】:
假设我有 html
<div>Hey</div><div>This is <b>some text<b/>, right here. <a>Link<a/></div>
和代码
soup = BeautifulSoup(html)
texts = soup.findAll(text=True)
print() 将返回
['Hey', 'This is ', 'some text', ', right here.', 'Link']
文本。
我怎样才能排除像'b'这样的标签(只包含文本),所以我可以获得所需的输出
['Hey', 'This is <b>some text<b/>, right here.', 'Link']
最好也不是字符串,而是等效的 NavigableStrings 或类似的。
换句话说,我怎样才能从导航树中排除一些标签?
【问题讨论】:
-
你的意思是什么我怎么能排除像'b'这样的标签(只包含文本),你认为像b这样的其他标签是什么?
-
只有 'i' 可能还有 br,尽管我的 html 只包含 b。我基本上想分别从标签中提取所有文本资源,除了我想提取父级文本的“b”之外,不包括其他兄弟标签中的任何文本。
-
你能添加一个更复杂的例子以及你想要的输出吗?
-
肯定的。我更新了问题。希望它足够复杂。假设 b 没有嵌套标签(即“仅文本”)。
标签: python beautifulsoup