在获取Beautiful Soup元素的.string时如何忽略标签?

发布于 2021-01-29 15:00:43

我正在使用带有子标记的HTML元素,这些子标记我想“忽略”或删除,以便文本仍然存在。刚才,如果我尝试.string使用带有标签的任何元素,那么我得到的仅仅是None

import bs4

soup = bs4.BeautifulSoup("""
    <div id="main">
      <p>This is a paragraph.</p>
      <p>This is a paragraph <span class="test">with a tag</span>.</p>
      <p>This is another paragraph.</p>
    </div>
""")

main = soup.find(id='main')
for child in main.children:
    print child.string

输出:

This is a paragraph.
None
This is another paragraph.

我要第二行This is a paragraph with a tag.。我该怎么做呢?

关注者
0
被浏览
61
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。
    for child in soup.find(id='main'):
        if isinstance(child, bs4.Tag):
            print child.text
    

    并且,您将获得:

    This is a paragraph.
    This is a paragraph with a tag.
    This is another paragraph.
    


知识点
面圈网VIP题库

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

去下载看看