【问题标题】:scraping text inside a element excluding text inside sup tag抓取元素内的文本,不包括 sup 标记内的文本
【发布时间】:2021-02-26 02:52:55
【问题描述】:

我需要抓取元素内的文本,但排除 <sup> 内的文本。

例如:

<a> 
    part1 
    <sup> part2 </sup>
    part3
</a>

从上面,我需要抓取part1part2(不是part3,它在sup 内)。

我用 beautifulsoup 尝试了 css 选择器:

soup.select_one('a:not(sup)').get_text(strip=True)

但没有排除 sup 里面的文字

【问题讨论】:

    标签: python css web-scraping beautifulsoup lxml


    【解决方案1】:

    使用element.name方法查看标签名称,如:

    from bs4 import BeautifulSoup
    from bs4 import element
    
    html = '''
    <a> 
        part1 
        <sup> part2 </sup>
        part3
    </a>
    '''
    
    soup = BeautifulSoup(html, "lxml")
    print([e.strip() for e in soup.find("a") if e.name != 'sup'])
    

    结果:

    ['part1', 'part3']
    

    【讨论】:

      猜你喜欢
      • 2014-11-28
      • 2012-04-03
      • 2021-06-03
      • 2015-02-16
      • 2018-04-06
      • 2022-12-12
      • 1970-01-01
      • 2017-02-07
      • 1970-01-01
      相关资源
      最近更新 更多