我正在尝试使用工作站点在Python中使用此登录表单,因此我可以对站点数据进行一些抓取和诸如此类的操作。
现在,当我打印r.text
的内容时,它与登录页面的HTML相同。该网站没有取得任何进展。
值得一提的是,我对此处使用请求无动于衷。我只是发现urllib
的方法很难看,而且我在这个网站上找到的大部分信息都倾向于使用Requests进行上述任务。
以下是我正在使用的信息。
<form action="login.cgi" autocomplete="off" id="frmLogin_4" method="post" name="frmLogin" onsubmit="return Login(1)">
<input id="tz_offset_5" name="tz_offset" type="hidden">
<table border="0" cellpadding="2" cellspacing="0" id="table_LoginPage_3">
<tr>
<td valign="top">
<input id="realm_16" name="realm" type="hidden" value="All Users">
<table border="0" cellpadding="2" cellspacing="0" id="table_LoginPage_6">
<tr>
<td>E-Mail Address</td>
<td> </td>
<td><input id="username_5" name="username" size="20" type="text"></td>
</tr>
<tr>
<td>Password</td>
<td> </td>
<td><input id="password_5" name="password" size="20" type="password"></td>
</tr>
<tr>
<td></td>
</tr>
<tr>
<td colspan="3"> </td>
</tr>
<tr>
<td> </td>
<td> </td>
<td><input id="btnSubmit_6" name="btnSubmit" type="submit" value="Sign In"> </td>
</tr>
</table>
</td>
</tr>
</table>
</form>
下面是我正在使用的Python。
import requests
url = 'https://<scrubbed>/dana-na/auth/url_default/welcome.cgi'
payload = {
'username':'<scrubbed>',
'tz_offset':'-480',
'realm':'All Users',
'password':'<scrubbed>',
'btnSubmit':'Sign In'
}
session = requests.session()
r = requests.post(url, payload)
print r.text
答案 0 :(得分:3)
使用data
关键字。来自documentation:
通常,您希望发送一些表单编码数据 - 非常类似于HTML 形成。为此,只需将字典传递给data参数即可。您的 数据字典将在请求时自动进行表单编码 是:
payload = {'key1': 'value1', 'key2': 'value2'}
r = requests.post("http://httpbin.org/post", data=payload)
print r.text
此外,您发布的HTML表明该表单实际上会转到login.cgi
而不是welcome.cgi
。您也可以在屏幕截图中看到这一点。
使用:
url = 'https://<scrubbed>/dana-na/auth/url_default/login.cgi'