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

时间:2012-11-14 07:17:12

标签: python post

如何传递网址并取消选中帖子请求中的复选框。

HTML看起来像这样:

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

我正在使用requests,第三方python库,如下所示:

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

到目前为止,将'encodeURL'设置为'0','未选中',''并且0不会在未选中复选框的情况下发布请求。 如何找到要传递给“encodeURL”的值才能取消选中该复选框?

2 个答案:

答案 0 :(得分:3)

摘要 - TL / DR

取消选中有效负载

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

要检查有效负载中的包含

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

<强>说明

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

另请参阅HTML Spec

  

提交表单后,只有“on”复选框控件可以变为successful

<强>更新

在使用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(我希望,这就是你的意思)。

答案 1 :(得分:-1)

//检查

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

//取消选中

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

jQuery(1.6 +):

//检查

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

//取消选中

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