2013-10-19 68 views
6

所以我想自动填写和提交表单,我使用Requests来做到这一点。使用请求提交表单Python

从检查的元素,我知道要提交的网址并submition的类型(后):

method="post" 
action="/sformsubmit" 
enctype="multipart/form-data" 

我的问题是,我的要求是不会通过并且是相当新的这个我不知道为什么。

在我的网页我有并排两个按钮侧像这样:

___________________________   ________________________________ 
    | 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'} 

但它似乎并没有工作,并没有产生任何错误。

任何帮助将不胜感激。在此先感谢

+0

你有什么错误?什么是回应?您的有效载荷不正确,但仍然很难在不知道实际响应的情况下正确回答您的问题。 – aychedee

+0

我没有得到任何错误,它似乎通过罚款没有任何反应。 'status_code'当我通过'p.status_code = 200'查询时 – user2897415

+0

回溯?此外,您正在尝试发布的网址会很好。 –

回答

5

好吧,您的有效载荷是错误的。但。我不确定是否改变它实际上会有所帮助,因为您没有收到您收到的错误消息。

payload = { 
    'inLeader':'', 
    'inMember':'', 
    'version':'0', 
    'key':'2013:a:c:3:2s', 
} 

你需要了解HTML表单和POST请求是什么,当你点击窗体上的提交按钮发送任何领域的value属性与name属性。例如,类型为submit的输入字段未发送。它没有name。我怀疑inLeaderinMember字段没有数据。这是通过Javascript以某种方式设置?

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

requests支持这一点。示例如下:

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

尝试只是发出获取请求,看看您是否至少可以获得200响应。这意味着auth正在工作。然后你可以尝试做实际的职位。

+0

我不认为它是通过Javascript设置的,我可以访问另一个已发送的表单, input type =“submit”value =“提交声明”>'已经更改为''并且在那一个中​​它们仍然是空的 – user2897415

+1

真的吗?为了正确调试它,实际需要的不是源代码。但是一个实际的发布请求。您可以在chrome开发工具的'network'选项卡下的Chrome中查看这些内容。当您手动提交表单时,它会记录POST,您可以查看已发送的信息。该URL对我来说看起来很好。 – aychedee

+0

我应该在哪里查找'network'选项卡以查看正在发送的内容......我点击了请求并在'preview'选项卡中显示了'html:我在inspect元素中看到的内容“部分显示我正在发送的内容 – user2897415