使用python + beautifulsoup,假设我有<class 'bs4.element.Tag'>
个对象,a
:
<div class="class1"><em>text1</em> text2</div>
我可以使用以下命令提取text1 text2
并将其放入b
:
b = a.text
我可以使用以下命令提取text1
并将其放入c
:
c = a.findAll("em")[0].text
但我怎样才能提取text2
?
答案 0 :(得分:2)
我略微编辑了您的HTML代码段,以便在 Application.Current.Shutdown();
标记内外只有一个单词,以便getText()
从<em>
容器中提取所有文本,从而导致以下输出:
<div>
如您所见,这只是一个删除了'text1 foo bar text2 foobar baz'
标记的字符串。据我所知,您希望从<em>
容器中的内容中删除<em>
标记的内容。
我的解决方案不是很好,但可以使用.replace()
将<div>
标记的内容替换为空字符串<em>
来完成。由于这可能会导致前导或尾随空格,您可以调用.lstrip()
来删除那些:
''
打印声明的输出:
#!/usr/bin/env python3
# coding: utf-8
from bs4 import BeautifulSoup
html = '<div class="class1"><em>text1 foo bar</em> text2 foobar baz</div>'
soup = BeautifulSoup(html, 'html.parser')
result = soup.getText().replace(soup.em.getText(), '').lstrip()
print(result)
答案 1 :(得分:2)
您可以删除div父级的所有子级,然后获取父级的内容,如下所示:
>>> a = BeautifulSoup(out_div, 'html.parser')
>>> for child in a.div.findChildren():
... child.replace_with('')
...
<em>text1</em>
>>> a.get_text()
u' text2'