【问题标题】:Python/BeautifulSoup - how to remove all tags from an element?Python/BeautifulSoup - 如何从元素中删除所有标签?
【发布时间】:2013-04-18 20:29:06
【问题描述】:

如何简单地从 BeautifulSoup 中找到的元素中删除所有标签?

【问题讨论】:

    标签: python beautifulsoup


    【解决方案1】:

    简单地将内容作为文本而不是 html 获取的代码:

    'html_text' 参数是您将传递给此函数以获取文本的字符串

    from bs4 import BeautifulSoup
    
    soup = BeautifulSoup(html_text, 'lxml')
    text = soup.get_text()
    print(text)
    

    【讨论】:

    • 已添加,查看即可。
    【解决方案2】:

    这里是源代码:你可以得到正好在 URL 中的文本

    URL = ''
    page = requests.get(URL)
    soup = bs4.BeautifulSoup(page.content,'html.parser').get_text()
    print(soup)
    

    【讨论】:

      【解决方案3】:

      bs4 中的 BeautifulStoneSoup 消失了,在 Python3 中变得更加简单

      from bs4 import BeautifulSoup
      
      soup = BeautifulSoup(html)
      text = soup.get_text()
      print(text)
      

      【讨论】:

      • 最好使用get_text()而不是getText()
      • 这是为什么呢?可能确实如此,但了解原因会有所帮助。
      • getText() 是 bs3 语法,不符合 pep8。它可能会被弃用。
      【解决方案4】:

      使用get_text(),它将文档中或标签下的所有文本作为单个Unicode字符串返回。

      例如,从以下文本中删除所有不同的脚本标签:

      <td><a href="http://www.irit.fr/SC">Signal et Communication</a>
      <br/><a href="http://www.irit.fr/IRT">Ingénierie Réseaux et Télécommunications</a>
      </td>
      

      预期结果是:

      Signal et Communication
      Ingénierie Réseaux et Télécommunications
      

      这里是源代码:

      #!/usr/bin/env python3
      from bs4 import BeautifulSoup
      
      text = '''
      <td><a href="http://www.irit.fr/SC">Signal et Communication</a>
      <br/><a href="http://www.irit.fr/IRT">Ingénierie Réseaux et Télécommunications</a>
      </td>
      '''
      soup = BeautifulSoup(text)
      
      print(soup.get_text())
      

      【讨论】:

        【解决方案5】:

        为什么我没有看到任何关于unwrap 方法的答案?或者,更简单的是get_text 方法

        http://www.crummy.com/software/BeautifulSoup/bs4/doc/#unwrap http://www.crummy.com/software/BeautifulSoup/bs4/doc/#get-text

        【讨论】:

          【解决方案6】:

          可以使用bs4中的decompose方法:

          soup = bs4.BeautifulSoup('<body><a href="http://example.com/">I linked to <i>example.com</i></a></body>')
          
          for a in soup.find('a').children:
              if isinstance(a,bs4.element.Tag):
                  a.decompose()
          
          print soup
          
          Out: <html><body><a href="http://example.com/">I linked to </a></body></html>
          

          【讨论】:

            【解决方案7】:

            看起来就是这样!就这么简单

            通过这一行,您可以将当前元素中的所有文本部分连接在一起

            ''.join(htmlelement.find(text=True))
            

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2014-04-25
              • 2020-06-28
              • 1970-01-01
              • 1970-01-01
              • 2015-10-08
              相关资源
              最近更新 更多