从https://fremdgehen69.com获取tp_redirect_id值为空,原因是什么?
问题原因分析
1. XPATH索引定位的局限性
你通过input[1]、input[2]的索引方式定位元素,完全依赖表单内input标签的顺序,但页面元素的排列可能和你预期不符——也许tp_redirect_id对应的input根本不是第二个,或者页面表单结构发生了变化。别依赖索引,直接根据元素的name属性写XPATH更可靠,比如:
print(r.html.xpath('//input[@name="tp_redirect_id"]')[0].attrs.get('value', '空'))
2. 动态内容未被渲染
tp_redirect_id可能是页面加载后通过JavaScript动态生成的。requests_html的get方法默认只获取静态HTML,不会执行页面JS。你可以尝试调用render()方法触发JS渲染:
r = session.get('https://fremdgehen69.com', verify=False) r.html.render() # 执行页面JavaScript # 之后再进行元素定位
3. 该字段首次访问本身为空
部分网站的tp_redirect_id用于记录跳转来源,只有当你从其他页面跳转到目标页时才会生成有效值。直接访问首页的话,这个字段本来就是空的,属于正常场景。你可以手动打开网站查看源码,确认该input的value值是否确实为空。
另外,控制台的SSL警告是因为你关闭了证书验证(verify=False),和字段为空的问题无关,若想屏蔽警告可添加以下代码:
import urllib3 urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)
内容的提问来源于stack exchange,提问作者MausHausi
相关产品推荐
相关产品推荐

