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

如何从隐藏input获取值?requests_html获取失败求助

解决隐藏input元素值获取为空的问题

问题描述

尝试获取页面中隐藏input元素的值:

<input id="CheckoutData_GASessionsID" name="CheckoutData.GASessionsID" type="hidden" value="972728534.978155511.1110">

使用代码如下:

from requests_html import HTMLSession
s1 = HTTPSession()

r = s1.get("https://www.adidas.co.il/en/checkout#Global-e_International_Checkout", headers=headers)
r.html.render(sleep=5)
sessionid = r.html.find("#CheckoutData_GASessionsID")
print(sessionid)

已完成会话登录并添加商品至购物车,但运行代码后输出为空列表,需解决该问题。


解决方案

  • 确认会话状态一致性
    确保登录、加购和访问结账页面使用的是同一个HTMLSession实例s1,避免因会话对象重新创建导致Cookie丢失,无法加载用户相关的页面元素。

  • 优化页面渲染参数
    部分页面元素加载延迟较高,可延长等待时间或启用元素等待机制:

    # 延长渲染等待时间
    r.html.render(sleep=10, wait=10)
    # 尝试获取单个元素便于调试
    sessionid = r.html.find("#CheckoutData_GASessionsID", first=True)
    print(sessionid.value if sessionid else "未找到目标元素")
    
  • 检查iframe嵌套情况
    电商结账页面常使用iframe嵌入内容,目标元素可能在iframe内部,需切换上下文查找:

    # 遍历页面所有iframe
    for iframe in r.html.find("iframe"):
        # 切换到iframe的HTML上下文
        iframe_content = iframe.html
        target_element = iframe_content.find("#CheckoutData_GASessionsID", first=True)
        if target_element:
            print(target_element.value)
            break
    
  • 直接从源码提取值
    若目标元素值在初始HTML源码中已存在,可绕过渲染用正则提取:

    import re
    # 匹配目标元素的value属性
    value_pattern = r'id="CheckoutData_GASessionsID"[^>]*value="([^"]+)"'
    match_result = re.search(value_pattern, r.text)
    if match_result:
        print(match_result.group(1))
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 09:30:51