使用Python请求传递登录名/密码

时间:2013-12-06 04:03:31

标签: python python-2.7 http-post web-crawler python-requests

我已经查看了相关的答案,但我还没有发现一些非常有用的东西。我正试图从我团队的CBS Sportsline页面上搜集一些奇幻棒球信息。

我想发布登录名和密码,然后当我使用get命令时,请查看特定于我的帐户的数据。

这是我的尝试:

import requests

myurl = 'http://bbroto.baseball.cbssports.com/transactions'

payload = {
       'userid': '(my username)',
       'Password': '(my password)',
       'persistent': '1'}

session = requests.session()
p = requests.post(myurl, data=payload)

r = session.get(myurl)

print r.content

它为我提供了通用页面(好像我没有登录)。

以下是表单信息的样子:

<form method="post" action="/login/index" name="login_form" id="login_form" >
<input     type="hidden" name="dummy::login_form" id="dummy::login_form" value="1">
<input type="hidden" id="form::login_form" name="form::login_form" value="login_form">
<table id="table_login_form" class="formLayout"><input type="hidden" 
value="http://bbroto.baseball.cbssports.com/transactions" name="xurl" id="xurl"><input
type="hidden" value="150" name="master_product" id="master_product"><input 
type="hidden" value="cbssports" name="vendor" id="vendor"><tr id="row_userid"><td 
align="right"></td>
<td><table class="fieldLayout"><tr><td><input type="text" value="Email or 
ID" name="userid" id="userid" class="placeHolder" onfocus="if(this.value==defaultValue)
{this.value='';};" size="30" maxlength="264" data-field-placeholder="Email or ID" data
-field-required="1"></td></tr></table></td></tr><tr id="row_password"><td    
align="right">
</td><td>
<table class="fieldLayout"><tr><td><input type="password"
value="Password" name="password" id="password" class="placeHolder" 
onfocus="if(this.value==defaultValue){this.value='';};" size="30" maxlength="12" data-
field-placeholder="Password" data-field-required="1"></td></tr></table></td></tr><tr>   
<td>
<!--label column--></td><td colspan="5"><input type="submit" id="submitButton"  
value="Sign
In" class="formButton" om-event="User Utilities|Sign In - Member|Sign In"></td></tr>
</table><!--end FORM table-->
</form>

所以相关字段似乎是userid和Password

1 个答案:

答案 0 :(得分:4)

您发布了错误的表单数据。

查看帖子数据:

enter image description here

所以帖子数据可能如下所示:

payload = {  
   'dummy::login_form': 1,  
   'form::login_form': 'login_form',  
   'xurl': '/',  
   'master_product': 150,  
   'vendor': 'cbssports',  
   'userid': YOUR EMAIL HERE,  
   'password': YOUR PASSWORD HERE,  
}