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

Python爬虫抓取HTML属性与float-right类文本报错求解

错误原因分析
  • 代码1报错原因:
    1. find_elements_by_class_name() 仅支持传入单个类名,不能同时传入label genericQtipHelp两个类名,若要匹配同时包含两个类的元素,可改用CSS选择器实现
    2. find_elements_* 系列方法返回的是匹配元素的列表,不能直接对列表调用__getattribute__方法,需要遍历列表对单个元素做属性操作
  • 代码2报错原因:
    BeautifulSoup的find()方法参数逻辑错误,属性名和属性值的位置写反,导致没有匹配到任何元素返回None,调用text属性时触发报错。
正确实现方案

你的HTML结构是每个标签项后面紧跟对应的数值项,两类元素数量一一对应,直接按顺序配对即可同时提取9组标签名和对应值:

方案1:直接用Selenium实现(无需转BeautifulSoup)

# 匹配所有标签元素
labels = driver.find_elements_by_css_selector('span.label.genericQtipHelp')
# 匹配所有数值元素
values = driver.find_elements_by_css_selector('span.float-right')

# 配对存储为字典,方便后续调用
result = {}
for label, value in zip(labels, values):
    # 可根据需求保留或去除标签末尾的冒号
    label_text = label.text.strip().rstrip(':')
    value_text = value.text.strip()
    result[label_text] = value_text
    print(f"{label_text}: {value_text}")

# 输出全部9组键值对
print(result)

如果需要提取data-hasqtip属性,遍历单个标签元素时调用label.get_attribute('data-hasqtip')即可。

方案2:用BeautifulSoup解析实现

如果已经将页面源码转为BeautifulSoup对象,可使用以下写法:

# 匹配所有标签元素
labels = soup.select('span.label.genericQtipHelp')
# 匹配所有数值元素
values = soup.select('span.float-right')

result = {}
for label, value in zip(labels, values):
    label_text = label.get_text(strip=True).rstrip(':')
    value_text = value.get_text(strip=True)
    result[label_text] = value_text
    print(f"{label_text}: {value_text}")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 16:18:00