如何找到要传递的值以取消选中复选框?

2024-10-01 07:44:41 发布

您现在位置:Python中文网/ 问答频道 /正文

如何传递一个url并取消选中post请求中的复选框。在

HTML如下所示:

<input type="checkbox" name="encodeURL" ID="encodeURL" checked="checked">

我使用的是第三方python库requests,如下所示:

^{pr2}$

到目前为止,将“encodeURL”设置为“0”、“unchecked”、“and 0”时,没有在未选中复选框的情况下发布请求。 如何找到要传递给“encodeURL”的值以取消选中该复选框?在


Tags: andnameidurlinputhtmltypepost
2条回答

总结-TL/DR

取消选中一个框-将其排除在有效负载中

payload = {'u': 'http://www.google.com'}
r = requests.post('http://www.website.com/', data=payload)

选中一个复选框-将其包含在有效负载中

^{pr2}$

说明

我们需要区分html标记(在您的示例中默认设置了复选框)和服务器端行为,后者是完全正交的。显然,您想要做的是在提交带有未选中复选框的表单时模仿浏览器的行为。 在这种情况下,服务器不会接收任何参数,只要从请求中忽略它。在

另请参见HTML Spec

^{bq}$

更新

在调查了TamperData插件的具体情况后,我发现这可能与速度限制如何处理cookie有关,所以这不是请求库的错误,只是站点的一个特性。此代码似乎有效:

s = requests.session()
s.get('http://speed-limit.info/index.php')  # getting the cookies
response = s.post('http://speed-limit.info/includes/process.php?action=update', 
                  data={'u': 'stackoverflow.com', 'allowCookies': 'on'},
                  allow_redirects=True)

然后响应中的encodeURL被取消选中(我希望,这就是您的意思)。在

//检查

document.getElementById("encodeURL").checked = true;

//取消选中

^{pr2}$

jQuery(1.6+):

//检查

$("#encodeURL").prop("checked", true);

//取消选中

$("#encodeURL").prop("checked", false);

相关问题 更多 >