我一直在尝试使用requests
和urllib
(单独)提交表单,但没有取得多大成功。
打印响应显示实际填充了相关字段,但未发送表单。
这是我使用过的代码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>
如果有人能指出我的解决方案,我将不胜感激。 谢谢你的支持!
答案 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是来自服务器的响应,在收到您的帖子请求后。