2014-10-29 150 views
0

我是网页抓取的新手,但想尝试在项目中使用它。我想登录到fantasyfootball网站,下面是从网站的形式: 试图使用python登录到网站

<fieldset> 

    <table cellspacing="0" cellpadding="0" border="0" width="695" class="data-entry"> 
     <tbody> 
     <tr> 
      <td> 
       <label><span>Email Address</span></label> 
       <input id="j_username" class="required email" type="text" name="j_username" title="*Please enter a valid email address" /> 
      </td> 
      <td> 
       <label><span>Password</span></label> 
       <input id="j_password" class="required password" type="password" name="j_password" title="*Please enter a valid password<br/>(minimum 6 characters)" /> 

这里是我到目前为止的代码:

from httplib2 import Http 
from urllib.parse import urlencode 
url='https://users.premierleague.com/PremierUser/account/login.html' 
h=Http() 
email='myemail' 
password='mypassword' 
h.add_credentials(email,password) 
data={'j_username':'myemail','j_password':'mypassword'} 
web_data = urlencode(data) 
response, content = h.request(url, 'POST', web_data) 

我没有得到任何错误,在刚刚没事全部

+2

我会建议[请求](http://docs.python-requests.org/en/latest/)库。 – Noctua 2014-10-29 14:17:23

+0

你能打印回应吗? – ErlVolton 2014-10-29 14:18:15

+0

你确定你已经拥有了所有的数据包吗?您可以剖析使用Chrome开发人员工具发送的请求,以检查这一点。 – matsjoyce 2014-10-29 14:18:19

回答

0

问题是您POST'ing到页面包含登录窗体,而不是处理登录窗体的页面。如果您检查登录表单的HTML,则会看到action网址为“../j_spring_security_check”,相当于https://users.premierleague.com/PremierUser/j_spring_security_check。所以在你的代码中改变URL。还要摆脱add_credentials行,因为他们没有使用HTTP基本身份验证。一旦你达到这个目标,你可能仍然不会在登录页面的响应中得到一个主体。登录成功后,它可能会将您带到主页。因此,仔细查看您的响应标题即可。同样在成功登录时,它会给你一些会话ID,你需要在随后的请求中包含一些会话ID以证明你已经登录。但是,这个网站的详细信息将特定于管理会话。

+0

感谢您的信息。我改变了它,仍然没有任何反应。但我得到了不同的回应:{'content-length':'0','content-type':'text/plain; charset = UTF-8','location':'https://users.premierleague.com/PremierUser/account/login-retry.html','set-cookie':'BIGipServerPOOL-46.38.180.105-8443 = 3373535404.64288。 0000;路径= /','日期':'周三,2014年10月29日14:37:42 GMT','状态':'302','连接':'关闭'} – user3046660 2014-10-29 14:39:14

+0

好吧,这是说你的凭证是无效的,请注意它如何将您重定向到登录重试页面。 – ErlVolton 2014-10-29 14:44:59

+0

是的,我注意到它发送我回到重试登录页面,凭据是正确的。我只是想改变一下,看看有没有什么可行的,即将推出 – user3046660 2014-10-29 15:08:24