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

如何用BeautifulSoup同时获取option标签的文本与值?

如何用BeautifulSoup同时获取option的value属性与文本内容?

目标HTML结构

<select class="select" name="Type">
   <option value="1">Test A</option>
   <option value="2">Test B</option>
   <option value="3">Test C</option>
   <option value="4">Test D</option>
</select>

原有代码(仅单独获取文本或value)

soup = BeautifulSoup(response.content, 'html.parser')
list_a = soup.find('select', {'name':'Type'})

# 仅获取文本
for i in list_a.stripped_strings:
    print(i)

# 仅获取值
list = list_a.find_all('option')
for x in list:
    val = x.get('value')
    print(str(val))

解决方案:同时获取value与文本

只需遍历每个<option>标签,在单次循环中同时提取value属性和标签文本即可:

soup = BeautifulSoup(response.content, 'html.parser')
select_element = soup.find('select', {'name':'Type'})

# 遍历所有option,同时获取value和文本
for option in select_element.find_all('option'):
    option_value = option.get('value')
    option_text = option.get_text(strip=True)  # strip=True去除文本前后空白
    print(f"Value: {option_value}, 文本: {option_text}")

如果需要将结果存储为结构化数据(比如字典列表),可以这样写:

soup = BeautifulSoup(response.content, 'html.parser')
select_element = soup.find('select', {'name':'Type'})

options_data = []
for option in select_element.find_all('option'):
    options_data.append({
        'value': option.get('value'),
        'text': option.get_text(strip=True)
    })

# 打印结构化结果
for item in options_data:
    print(item)

输出示例:

{'value': '1', 'text': 'Test A'}
{'value': '2', 'text': 'Test B'}
{'value': '3', 'text': 'Test C'}
{'value': '4', 'text': 'Test D'}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 14:45:35