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

下拉选择触发后网页抓取问题:如何获取隐藏表格数据?

抓取ASPX页面下拉选择后的表格数据

这个页面是ASP.NET构建的动态页面,直接用GET请求只能拿到初始页面框架,表格内容需要通过提交下拉选择的表单数据(POST请求)才能加载,以下是具体解决步骤:

核心原理

ASP.NET页面依赖__VIEWSTATE、__VIEWSTATEGENERATOR、__EVENTVALIDATION等隐藏字段维护会话状态,下拉选择操作会触发POST回发,提交这些字段和选中的下拉值后,服务器才会返回包含表格的页面。

实现代码

import requests
from bs4 import BeautifulSoup

# 模拟浏览器请求头
headers = {
    'User-Agent': "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36"
}

url = "https://shafafiyah.socpa.org.sa/EmployeeDetails.aspx"

# 1. 初始化会话,获取初始页面的隐藏字段和下拉选项
session = requests.Session()
initial_response = session.get(url, headers=headers)
soup = BeautifulSoup(initial_response.content, 'html5lib')

# 提取ASP.NET必备的隐藏字段
view_state = soup.find('input', {'id': '__VIEWSTATE'})['value']
view_state_generator = soup.find('input', {'id': '__VIEWSTATEGENERATOR'})['value']
event_validation = soup.find('input', {'id': '__EVENTVALIDATION'})['value']

# 2. 获取下拉框的选中值(示例:取第一个有效选项,可根据需求修改)
# 需通过浏览器F12确认页面实际的下拉框id
dropdown = soup.find('select', {'id': 'ddlGovernorate'})
selected_value = dropdown.find_all('option')[1]['value']  # 跳过第一个默认提示选项

# 3. 构造POST请求的表单数据
form_data = {
    '__VIEWSTATE': view_state,
    '__VIEWSTATEGENERATOR': view_state_generator,
    '__EVENTVALIDATION': event_validation,
    'ddlGovernorate': selected_value,  # 替换为下拉框的name属性值
    '__EVENTTARGET': 'ddlGovernorate',  # 指定触发回发的控件
    '__EVENTARGUMENT': ''
}

# 4. 发送POST请求,加载表格数据
post_response = session.post(url, data=form_data, headers=headers)
post_soup = BeautifulSoup(post_response.content, 'html5lib')

# 5. 提取表格内容(替换为实际表格id)
target_table = post_soup.find('table', {'id': 'gvEmployee'})
if target_table:
    # 遍历表格行,输出内容
    for row in target_table.find_all('tr'):
        cells = row.find_all(['td', 'th'])
        row_content = [cell.get_text(strip=True) for cell in cells]
        print(row_content)
else:
    print("未找到目标表格,请检查下拉框和表格的ID是否正确")

注意事项

  • 必须使用requests.Session()保持会话,否则服务器会拒绝POST请求
  • 要通过浏览器开发者工具(F12)确认下列元素的准确属性:
    • 下拉框的id和name属性
    • 目标表格的id
    • 隐藏字段的id(通常固定为__VIEWSTATE、__VIEWSTATEGENERATOR、__EVENTVALIDATION)
  • 如果需要选择多个下拉选项或点击按钮触发,需补充对应的表单字段(比如按钮的name和value)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 23:01:13