如何使用pythonBeautiful soup只获得第1级的navigableText?
发布于 2021-01-29 17:32:04
我正在使用Beautiful soup从此示例html代码获取文本:
....
<div style="s1">
<div style="s2">Here is text 1</div>
<div style="s3">Here is text 2</div>
Here is text 3 and this is what I want.
</div>
....
文本1和文本2位于同一级别2,文本3位于较高级别1。我只想获取文本3并使用它:
for anchor in tbody.findAll('div', style="s1"):
review=anchor.text
print review
但是这些代码使我得到所有的文本1,2,3。如何只获得第一级文字3?
关注者
0
被浏览
41
1 个回答
-
就像是:
for anchor in tbody.findAll('div', style="s1"): text = ''.join([x for x in anchor.contents if isinstance(x, bs4.element.NavigableString)])
作品。只是知道您还会在其中获得换行符,所以
.strip()
可能需要ing。例如:
for anchor in tbody.findAll('div', style="s1"): text = ''.join([x for x in anchor.contents if isinstance(x, bs4.element.NavigableString)]) print([text]) print([text.strip()])
版画
[u'\n\n\nHere is text 3 and this is what I want.\n'] [u'Here is text 3 and this is what I want.']
(我将它们放在列表中,以便您可以看到换行符。)