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

如何用Python和BeautifulSoup获取下拉选框的选中项文本?

解决下拉选框选中文本获取问题

问题分析

  1. 第一种方法报错'NoneType' object has no attribute 'get_text',是因为find("span",id="sexo-button")未定位到目标元素,可能是HTML结构解析时的层级偏差,或是返回页面内容与提供的源码存在差异。
  2. 第二种方法返回none,原因是页面存在两个带selected=""属性的<option>,你取了第一个空选项;且BeautifulSoup中获取元素属性需用.get('value')而非.value,另外实际显示的选中文本并不在<option>的value里,而是在前端渲染的状态标签中。

可行解决方案

根据提供的网页源码,实际选中的文本直接显示在class="ui-selectmenu-status"的<span>标签中,直接定位该标签即可获取目标内容:

login_request = session.post(url, data=payload, headers=headers, cookies=cookies)
soup = BeautifulSoup(login_request.text, 'lxml')
# 直接定位显示选中状态的span标签
sexo = soup.find("span", class_="ui-selectmenu-status").get_text(strip=True)
print(sexo)

如果仍无法找到该元素,可通过父元素#sexo-button间接定位:

login_request = session.post(url, data=payload, headers=headers, cookies=cookies)
soup = BeautifulSoup(login_request.text, 'lxml')
sexo_button = soup.find("a", id="sexo-button")
if sexo_button:
    sexo = sexo_button.find("span", class_="ui-selectmenu-status").get_text(strip=True)
    print(sexo)
else:
    print("未找到目标元素")

关于

页面中两个<option>都带有selected=""属于前端渲染异常,若需获取选中项的value值,可筛选排除空值的选项:

login_request = session.post(url, data=payload, headers=headers, cookies=cookies)
soup = BeautifulSoup(login_request.text, 'lxml')
# 筛选有selected属性且value不为空的option
selected_option = soup.find("select", name="sexo").find("option", selected=True, value=True)
if selected_option:
    print("选中值的文本:", selected_option.get_text(strip=True))
    print("选中值的value:", selected_option.get("value"))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 14:54:19