Python - 表格已填写但未发送

时间:2014-02-14 08:43:08

标签: python forms post urllib python-requests

我一直在尝试使用requestsurllib(单独)提交表单,但没有取得多大成功。 打印响应显示实际填充了相关字段,但未发送表单。 这是我使用过的代码python(当然,form_data和url已被更改)

import urllib
import urllib.request
import urllib.parse
import requests
form_data = {'username':'amiti9124@gmail.com',
             'pass':'123456',
             'passC':'123456',
             'Fname':'amitiamiti',
             'Tkav':'039111111',
             'Cname':'abc',
             'Creditme':'2',
             'numberOfFaxes':10,
             'faxNumber1':'039555555'}
url = "www.someurl.com"
req = requests.post(url,form_data)
print(req.content.decode('UTF-8'))

编辑:输出的一部分也被添加

<form action="" method="POST"> 

<div id="menues">פרטי מנוי</div>

<div id="titles"><font color="red" >*</font> כתובת מייל :
    <br />
    <input id="inputs" type="text" class="" dir="ltr" style="text-align:left; direction: ltr;" name="username" value='amiti9124@gmail.com'  />
</div>


<div id="titles"><font color="red" >*</font>סיסמה :
    <br />
    <input id="inputs" type="password" class="" name="pass"  dir="ltr" style="text-align:left; direction: ltr;"  value=123456 />
</div>


<div id="titles"><font color="red" >*</font>אימות סיסמה :
    <br />
    <input id="inputs" type="password" name="passC" class=""  dir="ltr" style="text-align:left; direction: ltr;"  value=123456 />
</div>

<div id="titles"><font color="red" >*</font>שם מלא :
    <br />
    <input id="inputs" type="text" name="Fname" class="" value='amiti amiti' />
</div>

<div id="titles"><font color="red" >*</font>טלפון :
    <br />
    <input id="inputs" type="text" name="Tkav" class="" dir="ltr" value='039111111' />
</div>

<div id="titles">שם חברה (לחשבונית) :
<br />
<input id="inputs" type="text" name="Cname" value='abc' />
</div>

<div id="titles" class="paidOrTrial">
<input type="radio" id="Creditme" name="Creditme"  value="1" style="width: 20px; height: 20px; vertical-align: middle;" />
המשך לתשלום בכרטיס אשראי.
<br />
<input type="radio" id="trialAccount" name="Creditme" checked="checked" value="2" style="width: 20px; height: 20px; vertical-align: middle;"/>
בקשת יתרת התנסות/חשבון נסיון
</div>

<div id="titles" style="display: none; padding: 5px 0 5px 0;">כמות פקסים צפויה לחודש:
    <input type="number" id="numberOfFaxes" name="numberOfFaxes" min="0" max="300" step="10" style="width: 40px;" value='10' dir="ltr"/>
    <div id="err_msg_number" style="display: none; color: red;"></div>
</div>
<div id="numberOfFaxesWrapper" style="display: none;">

    <div id="titles" style="padding: 10px 0px;">חשבון ההתנסות יאפשר שליחת פקסים ל 3 המספרים הבאים :</div>

    <div id="titles">מספר פקס 1 :
        <br />
        <input id="inputs" class="" type="text" name="faxNumber1" dir="ltr" value='039555555' />
    </div>

    <div id="titles">מספר פקס 2 :
        <br />
        <input id="inputs" class="" type="text" name="faxNumber2" dir="ltr"  />
    </div>

    <div id="titles">מספר פקס 3 :
        <br />
        <input id="inputs" class="" type="text" name="faxNumber3" dir="ltr"  />
    </div>
</div>



<input type="submit" name="Button2222" value="הרשם" style="margin: 6px 0pt; padding: 0px 5px; font-size: 130%; font-weight: bold; color: rgb(0, 0, 0);">
</form>

如果有人能指出我的解决方案,我将不胜感激。 谢谢你的支持!

2 个答案:

答案 0 :(得分:0)

尝试使用

req = requests.post(url, data=form_data)

如果没有关键字,您几乎不知道您的数据参数与哪个参数相关联,但它可能不是data

答案 1 :(得分:0)

requests.post(url,form_data)会发送数据。发送的http请求是:

POST /path?query HTTP/1.1
Host: example.com
Content-Length: 146
Content-Type: application/x-www-form-urlencoded
Accept-Encoding: gzip, deflate, compress
Accept: */*
User-Agent: python-requests/x.x.x CPython/y.y.y Linux/z.z.z

username=amiti9124%40gmail.com&Cname=abc&Creditme=2&Fname=amitiamiti&pass=123456&numberOfFaxes=10&faxNumber1=039555555&Tkav=039111111&passC=123456

您可以在浏览器中手动发送表单并比较请求。

您看到的html是来自服务器的响应,收到您的帖子请求后。