Python 从HTML文档中筛选所有内部文本

Python 从HTML文档中筛选所有内部文本,python,html,beautifulsoup,Python,Html,Beautifulsoup,我想要一个大的HTML文档,我想要去除所有标签之间的所有内部文本。我发现的一切都是关于从HTML中提取文本的。我想要的是原始的HTML标记,它们的属性保持不变。如何过滤文本?使用soup查找所有文本。在每个文本元素上查找所有(text=True)和.extract(),以将其从文档中删除: for textelement in soup.find_all(text=True): textelement.extract() 演示: >>来自bs4导入组 >>>汤=美汤(“”)\ …你好,

我想要一个大的HTML文档,我想要去除所有标签之间的所有内部文本。我发现的一切都是关于从HTML中提取文本的。我想要的是原始的HTML标记,它们的属性保持不变。如何过滤文本?

使用
soup查找所有文本。在每个文本元素上查找所有(text=True)
.extract()
,以将其从文档中删除:

for textelement in soup.find_all(text=True):
    textelement.extract()
演示:

>>来自bs4导入组
>>>汤=美汤(“”)\
…你好,世界!
这就是全部
…
  • 设置为启动!
    • ... ''') >>>汤 你好,世界

      • 就这些
      • 设置为开始
      >>>对于汤中的textelement.find_all(text=True): ... textelement.extract() ... 你好,世界 u'\n' “这就是全部\n” 你准备走了 u'\n' >>>打印汤。美化

    >>> from bs4 import BeautifulSoup
    >>> soup = BeautifulSoup('''\
    ... <html><body><p>Hello world!<p>
    ... <div><ul><li>This is all
    ... </li><li>Set to go!</li></ul></div>
    ... </body></html>''')
    >>> soup
    <html><body><p>Hello world!</p><p>
    </p><div><ul><li>This is all
    </li><li>Set to go!</li></ul></div>
    </body></html>
    >>> for textelement in soup.find_all(text=True):
    ...     textelement.extract()
    ... 
    u'Hello world!'
    u'\n'
    u'This is all\n'
    u'Set to go!'
    u'\n'
    >>> print soup.prettify()
    <html>
     <body>
      <p>
      </p>
      <p>
      </p>
      <div>
       <ul>
        <li>
        </li>
        <li>
        </li>
       </ul>
      </div>
     </body>
    </html>