使用Python请求提交表单

使用Python请求提交表单,python,forms,python-requests,Python,Forms,Python Requests,因此,我想自动填写和提交表单,我正在使用请求来实现这一点 通过检查元素,我知道要提交到的url和提交类型(post): 我的问题是,我的请求没有通过,而且我还不知道为什么 在我的网页上,有两个按钮并排排列,如下所示: ___________________________ ________________________________ | Submit decleration | | Reset Form

因此,我想自动填写和提交表单,我正在使用
请求
来实现这一点

通过检查元素,我知道要提交到的url和提交类型(post):

我的问题是,我的请求没有通过,而且我还不知道为什么

在我的网页上,有两个按钮并排排列,如下所示:

   ___________________________          ________________________________
   |    Submit decleration   |          |        Reset Form            |
   ___________________________          ________________________________
当我检查这条线上的元素时,我得到:

<td align="center" colspan="2">
    <input type="hidden" name="inLeader" value>
    <input type="hidden" name="inMember" value>
    <input type="hidden" name="version" value="0">
    <input type="hidden" name="key" value="2013:a:c:3:2s">
    <input type="submit" value="Submit declaration">
    <input type="reset" value="Reset form">
</td>
然而,它似乎不起作用,也没有产生任何错误


任何帮助都将不胜感激。提前谢谢

好的,你的有效载荷是错误的。但是我不确定更改它是否真的会有帮助,因为您没有包含收到的错误消息

payload = {
    'inLeader':'',
    'inMember':'',
    'version':'0',
    'key':'2013:a:c:3:2s',
}
关于HTML表单和POST请求,您需要了解的是,当您单击表单上的submit按钮时,它会发送具有
名称
属性的任何字段的
属性。例如,类型为
submit
的输入字段不会被发送。它没有
名称
。我怀疑
inLeader
inMember
字段没有数据。这是通过Javascript设置的吗

您在评论中提到需要登录才能访问表单?这很可能意味着您还需要随请求一起发送正确的cookie。因此,访问URL时,我会被要求输入用户名/密码。此网站正在使用

请求
支持此功能。示例如下:

import requests
from requests.auth import HTTPBasicAuth
requests.get(url, auth=HTTPBasicAuth('your username', 'your password'))

试着发出一个get请求,看看是否至少能得到200个响应。这意味着auth正在工作。然后你可以试着做实际的文章

你犯了什么错误?反应如何?你的有效载荷不正确,但在不知道实际响应是什么的情况下仍然很难正确回答你的问题。我没有收到任何错误,它看起来很好,只是什么都没有发生。当我通过
p.status\u code=200检查时,
status\u code
?另外,您试图发布到的URL也很好。@GamesBrainiac该URL是我们提交作业的专用链接,如果没有用户名和密码,它将无法访问。我不认为它是通过Javascript设置的,我可以访问另一个已发送的表单,因此
已更改为
,而在该表单中,它们仍然是空的吗?为了正确地调试它,您实际上需要的不是源代码。但是一个实际的post请求。您可以在Chrome开发工具的
网络
选项卡下的Chrome中看到这些。当您手动提交表单时,它将记录帖子,您可以查看已发送的信息。URL在我看来很好。我应该在
网络
选项卡中的什么位置查看正在发送的内容。。。我已经点击了请求,在
预览
选项卡中,它向我显示了
html:我在inspect元素中看到的内容
那么,哪个部分向我显示了发送的内容?你点击特定的http请求并查看标题。感谢它工作正常,问题不在于使用BasicAuth-cheers!
payload = {
    'inLeader':'',
    'inMember':'',
    'version':'0',
    'key':'2013:a:c:3:2s',
}
import requests
from requests.auth import HTTPBasicAuth
requests.get(url, auth=HTTPBasicAuth('your username', 'your password'))