如何从隐藏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
相关产品推荐
相关产品推荐

