You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在BeautifulSoup中不使用for循环获取<li>内指定文本?

在BeautifulSoup中无需for循环访问特定
  • 内的第一个内容
  • 你可以通过直接定位目标元素的方式避免for循环,以下是两种简洁的实现方法:

    方法1:链式查找

    先定位到目标<li>标签,再在其内部查找第一个<span>:

    from bs4 import BeautifulSoup
    
    html = '''
    <li class="property-card__detail-item property-card__detail-room js-property-detail-rooms"> 
        <span class="property-card__detail-value js-property-card-value"> 3 </span> 
        <span class="property-card__detail-text js-property-card-detail-text"> Quartos </span> 
    </li>
    '''
    
    soup = BeautifulSoup(html, 'html.parser')
    
    # 定位目标li标签(利用其独有的class:property-card__detail-room)
    target_li = soup.find('li', class_='property-card__detail-room')
    if target_li:
        # 获取li内第一个span的文本,strip=True去除首尾空白
        first_span_content = target_li.find('span').get_text(strip=True)
        print(first_span_content)  # 输出:3
    

    方法2:CSS选择器一步到位

    使用CSS选择器直接定位到目标<span>,无需分步查找:

    from bs4 import BeautifulSoup
    
    html = '''
    <li class="property-card__detail-item property-card__detail-room js-property-detail-rooms"> 
        <span class="property-card__detail-value js-property-card-value"> 3 </span> 
        <span class="property-card__detail-text js-property-card-detail-text"> Quartos </span> 
    </li>
    '''
    
    soup = BeautifulSoup(html, 'html.parser')
    
    # 直接选择目标li下的第一个span元素
    first_span_content = soup.select_one('.property-card__detail-room > span:first-of-type').get_text(strip=True)
    print(first_span_content)  # 输出:3
    

    关键说明

    • find()和select_one()都只会返回第一个匹配到的元素,不需要遍历整个元素集合
    • 利用目标<li>独有的class(如property-card__detail-room)可以精准定位,避免无关元素干扰
    • get_text(strip=True)用于去除文本首尾的空白字符,保证内容整洁

    内容的提问来源于stack exchange,提问作者Ricardo Teixeira

    相关产品推荐
    方舟 Agent Plan

    超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

    最近更新时间:2026.07.10 13:47:10