检索重定向到python中的登录页面的页面

时间:2011-07-27 13:12:58

标签: python https urllib2

我正以粗略的时间以编程方式从网站收集数据。我试图利用this example登录服务器,但由于我认为这是错误的登录类型,因此无法正常工作。

当我尝试下载数据以解析html时,我尝试访问的网站会重定向到登录页面。

这是网址:

https://mtred.com/rewards.html

并且代码是:

# build opener with HTTPCookieProcessor
o = urllib2.build_opener( urllib2.HTTPCookieProcessor() )
urllib2.install_opener( o )
# assuming the site expects 'user' and 'pass' as query params
p = urllib.urlencode( { 'UserLogin_username': 'mylogin', 'UserLogin_password': 'mypass' } )
# perform login with params
f = o.open( 'http://www.mtred.com/user/login.html',  p )
data = f.read()
f.close()
# second request should automatically pass back any
# cookies received during login... thanks to the HTTPCookieProcessor
f = o.open( 'https://www.mtred.com/rewards.html',p )
data = f.read()
print data
当我试图打开奖励时,它再次将我踢到登录页面。我试图通过奖励自动进行一些统计,因为这些信息不能通过公共API获得

2 个答案:

答案 0 :(得分:1)

弹出的一个问题是您传递的是登录表单参数的id值,而不是name参数。例如,在用户名表单字段中,您指定了UserLogin_username,但服务器所期望的该字段的名称为"UserLogin[username]"

<label for="UserLogin_username" class="required">
username or email <span class="required">*</span></label>       
<input name="UserLogin[username]" id="UserLogin_username" type="text" />    </div>

<div class="row">
<label for="UserLogin_password" class="required">password <span class="required">*</span></label>   
<input name="UserLogin[password]" id="UserLogin_password" type="password" /> </div>

由于服务器没有获取它所知道的参数,因此您看到的行为并非意外。 (并不是说这里没有其他问题;没看过。)

答案 1 :(得分:0)

您必须在帖子数据中包含html表单中包含的名为“YII_CSRF_TOKEN”的值。 或使用“ClientForm”lib