如何替换所有出现的特定嵌套标签

时间:2019-07-17 04:20:13

标签: python beautifulsoup

我想获取没有嵌套标签的html文件标签数据(首选:BeautifulSoup基本解决方案),但是正则表达式也可以工作 例如:

`<li><p>HELLO1</p></li >  <li>HELLO2</li><p>HELLO3</p>`

answer

HELLO1 HELLO2 HELLO3

我尝试使用正则表达式,但是没有找到用于汤对象的方法  str(soup).replace(“

  • ”,“

    ”)

    tags = soup.find_all(['p','li'])
    it returns:
    < p >HELLO1< /p >,
    HELLO1 ,
    HELLO2 ,
    HELLO3
    

    如果有li和p标签被嵌套,则结果应仅显示一次或应删除一个嵌套标签。 例如:如果

  • XYZ

  •        它应该变成
  • XYZ
  • 1 个答案:

    答案 0 :(得分:1)

    您可以使用.get_text()方法:

    data = '''<li><p>HELLO1</p></li >  <li>HELLO2</li><p>HELLO3</p>'''
    
    from bs4 import BeautifulSoup
    
    soup = BeautifulSoup(data, 'html.parser')
    
    print(soup.get_text(separator=' ', strip=True))
    

    打印:

    HELLO1 HELLO2 HELLO3