求助:从网页下拉菜单提取显示名称及对应HTML值
下拉菜单内容提取解决方案
问题原因
你当前代码定位的p.CaptionForm并非目标下拉菜单所在元素,下拉菜单对应的是HTML中的<select>标签,其内部的<option>标签才包含显示名称和关联的value属性值。此外,该ASPX页面依赖会话状态与表单字段,直接get请求可能无法获取完整的下拉选项。
修正代码
from bs4 import BeautifulSoup import requests url = 'http://clima.edu.ar/InformePorPeriodo.aspx' # 维持会话以获取完整页面内容 session = requests.Session() page = session.get(url) soup = BeautifulSoup(page.text, 'html.parser') # 定位目标下拉菜单(需替换为实际select元素的id,可通过浏览器开发者工具查看) select_element = soup.find('select', id='ddlEstacion') if select_element: # 遍历提取所有选项的显示名称和关联值 for opt in select_element.find_all('option'): display_name = opt.text.strip() value = opt.get('value') print(f"显示名称: {display_name}, 关联值: {value}") else: print("未找到目标下拉菜单元素")
关键注意事项
- 精准定位元素:通过浏览器F12开发者工具查看目标下拉菜单的HTML属性(如
id),替换代码中的ddlEstacion为实际值。 - 会话维持:使用
requests.Session确保请求携带ASPX页面所需的会话状态,避免因视图状态缺失导致内容不完整。 - 动态内容处理:若静态解析仍无法获取选项,需从页面中提取
__VIEWSTATE、__VIEWSTATEGENERATOR等表单字段,模拟表单提交以获取完整数据。
内容的提问来源于stack exchange,提问作者matsuo_basho
相关产品推荐
相关产品推荐

