如何使用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 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    就像是:

    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.']
    

    (我将它们放在列表中,以便您可以看到换行符。)



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看