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

如何用Python提取HTML中li的class属性与文本并转换状态标识?

提取设备拥有状态:结合BeautifulSoup处理class与文本

我来帮你搞定这个设备状态提取的需求!结合requests和BeautifulSoup,我们可以轻松实现你想要的功能,下面分两种输出格式给你具体的代码方案:

方案1:输出原始class标识与设备名称

这个方案会直接输出specChecked, 设备名或, 设备名的格式,完全匹配你给出的示例要求:

import requests
from bs4 import BeautifulSoup

# 替换为你要爬取的目标页面URL
target_url = "https://your-target-page.com"
# 发起请求获取页面内容
response = requests.get(target_url)
# 用BeautifulSoup解析HTML
soup = BeautifulSoup(response.text, "html.parser")

# 获取所有目标li标签(如果li在特定父元素下,比如class为device-list的ul,可以更精准:soup.find('ul', class_='device-list').find_all('li'))
all_li = soup.find_all("li")

for li in all_li:
    # 获取li的class属性,默认返回空列表避免报错
    li_classes = li.get("class", [])
    # 判断是否包含specChecked类
    status_class = "specChecked" if "specChecked" in li_classes else ""
    # 提取设备名称,去除前后空白字符
    device_name = li.get_text(strip=True)
    # 按要求格式输出
    print(f"{status_class}, {device_name}")

方案2:转换为1/0状态标识

如果需要把specChecked替换为1,空class替换为0,只需要稍微修改状态判断逻辑即可:

import requests
from bs4 import BeautifulSoup

target_url = "https://your-target-page.com"
response = requests.get(target_url)
soup = BeautifulSoup(response.text, "html.parser")

all_li = soup.find_all("li")

for li in all_li:
    li_classes = li.get("class", [])
    # 转换为数字状态:1表示拥有,0表示未拥有
    status = 1 if "specChecked" in li_classes else 0
    device_name = li.get_text(strip=True)
    print(f"{status}, {device_name}")

关键细节说明

  • 为什么用li.get("class", [])?因为HTML元素的class是多值属性,BeautifulSoup会把它解析为列表;如果元素没有class,这个方法会返回我们指定的空列表,避免抛出属性不存在的错误。
  • 用"specChecked" in li_classes判断更严谨:即使li标签同时有多个class(比如class="specChecked highlight"),也能正确识别出设备已拥有的状态。
  • li.get_text(strip=True)可以自动去除文本前后的空格、换行符,得到干净的设备名称。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 07:12:57