在python中登录网站的问题

时间:2014-06-24 11:20:39

标签: python login web urllib2 webpage

我一直在尝试将python与http / https网站连接起来,我遇到了urllib和urllib2。 经过一些研究,我可以创建一个网站登录,但似乎我做错了,我尝试使用不同的网页,但我无法做任何事情。 我正在处理以下代码:

import urllib, urllib2, cookielib

#guardar cookies
cookies = cookielib.CookieJar()

#crear opener
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cookies))

user = raw_input("Introdueix el teu nom d'usuari: ")
contra = raw_input("Introdueix la teva pass: ")

login_data = urllib.urlencode({'login' : user,'password' : contra})
sessio = opener.open('http://streamcloud.eu/login.html', login_data)

#en teoria ja esta logejat a partir d'aqui

print "La URL accedida es:",sessio.geturl()

#tanquem la web
sessio.close()

网站的形式是这样的:

<form method="POST" action="http://streamcloud.eu/" class="proform" name="FL">
<input type="hidden" name="op" value="login">
<input type="hidden" name="redirect" value="http://streamcloud.eu/?op=upload">

<p>
    <label>Username:</label>
    <input type="text" style="font-style: normal;" name="login" value="deuseux" class="text_field" />
</p>
<div class="clear"></div>
<p>
    <label>Password:</label>
    <input type="password" style="font-style: normal;" name="password" class="text_field" />
</p>
<div class="clear"></div>
<div>
    <input type="submit" class="button blue medium" value="Submit">
</div>
<div class="clear"></div>

登录表单位于此网页中:http://streamcloud.eu/login.html,而表单的操作位于http://streamcloud.eu,也许在那里我做错了什么? 如果我打印sessio.read()我可以清楚地看到我没有登录

有人看到代码有问题吗? 谢谢!

ps:抱歉我的英文不好

1 个答案:

答案 0 :(得分:1)

你的英语很好:)

表单上还有2个其他隐藏的输入字段,看起来需要使用您的登录名和密码提交。这些是:

<input type="hidden" name="op" value="login">
<input type="hidden" name="redirect" value="http://streamcloud.eu/?op=upload">

我猜op=login是必需的,不确定redirect=... - 也许你不需要它。无论如何,尝试将您的数据更改为以下内容,看看您是否得到了进一步的信息:

login_data = urllib.urlencode({'login' : user, 'password' : contra, 'op' : 'login', 'redirect' : 'http://streamcloud.eu/?op=upload'})