2014-10-29 2 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

+0

Не могли бы вы напечатать ответ? – ErlVolton

+0

У вас есть все пакеты? Вы можете просмотреть запрос, отправленный с помощью инструментов разработчика Chrome, чтобы проверить это. – matsjoyce

ответ

0

Проблема заключается в том, что вы отправляете сообщение на страницу, содержащую форму входа, а не страницу, обрабатывающую форму входа. Если вы проверите HTML-форму для входа, вы увидите, что URL-адрес action «../j_spring_security_check», который равен https://users.premierleague.com/PremierUser/j_spring_security_check. Таким образом, в вашем коде изменится URL-адрес. Также избавиться от линии add_credentials, потому что они не используют HTTP Basic Auth. Как только вы доберетесь до этого, вы, вероятно, все равно не получите тело обратно в ответ на странице входа. При успешном входе в систему он, вероятно, будет 302 на главной странице. Поэтому внимательно следите за заголовками ответов, когда вы это делаете. Также при успешном входе в систему он предоставит вам какой-то идентификатор сеанса, который вам нужно будет включить в последующие запросы, чтобы доказать, что вы вошли в систему. Подробности этого будут конкретными, однако этот сайт управляет сеансами.

+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; path =/',' date ':' Wed, 29 Oct 2014 14:37:42 GMT ',' status ':' 302 ',' connection ':' close '} – user3046660

+0

ОК, поэтому он говорит, что ваши учетные данные недействительны, обратите внимание как он перенаправляет вас на страницу повторной авторизации. – ErlVolton

+0

да, я заметил, что он отправил меня обратно на страницу повторной регистрации, учетные данные верны. Я просто пытаюсь изменить несколько бит, чтобы увидеть, работает ли что-нибудь, – user3046660

Смежные вопросы