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

Python requests.request无法获取页面动态修改的属性值问题咨询

问题解答

关于requests的理解错误说明

你的理解确实有误。requests库仅能获取服务器返回的原始静态HTML内容,本身不支持执行页面中的JavaScript代码。
你观察到的勾选复选框后data-role-type属性变更,是浏览器端JavaScript监听点击事件后,修改本地内存中DOM树产生的效果,这个修改是仅存在于浏览器运行时的,不会同步到服务器返回的原始HTML文件中,因此你用requests请求页面拿到的永远是默认的None值。

可行修复方案

  • 方案1:使用支持JS渲染的自动化工具(最稳妥)
    采用Selenium、Playwright这类浏览器自动化工具,真实模拟浏览器运行环境,会自动加载页面、执行JS代码、响应用户交互操作,可以直接获取到DOM修改后的属性值。Selenium示例代码如下:

    from selenium import webdriver
    from selenium.webdriver.common.by import By
    import time
    
    driver = webdriver.Chrome()
    # 替换为你的后台页面实际地址
    driver.get("http://127.0.0.1:5000/admin/management/accounts/edit_user/Sergio%20ley/?token=你的实际token")
    # 模拟点击member角色对应的复选框,替换为你页面上复选框的实际定位方式
    driver.find_element(By.ID, "替换为member复选框的实际id").click()
    # 等待JS执行完成
    time.sleep(0.5)
    # 获取修改后的属性值
    target_elem = driver.find_element(By.ID, "data-role-type-container")
    print(target_elem.get_attribute("data-role-type"))
    
  • 方案2:逆向前端逻辑直接计算值
    如果你不想引入浏览器工具,可以查看页面的前端JS源码,梳理清楚复选框选中状态和data-role-type取值的对应规则,在你的代码里直接根据选中的角色拼接出对应的值即可,不需要请求页面读取属性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.22 03:06:02