получение страницы, которая перенаправляет на страницу входа в Python - PullRequest
0 голосов
/ 27 июля 2011

У меня не хватает времени для сбора данных с веб-сайта программно. Я пытаюсь использовать этот пример для входа на сервер, но он не работает, так как я считаю, что это неправильный тип входа.

Сайт, к которому я пытаюсь получить доступ к перенаправлениям на страницу входа, когда я пытаюсь загрузить данные для анализа html.

Это URL:

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 ]

1 голос
/ 27 июля 2011

Одна проблема, которая появляется, заключается в том, что вы передаете 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>

, поскольку сервер не возвращает параметры, которыеоно знает, поведение, которое вы видите, не является неожиданным.(Не говоря о том, что здесь нет других проблем; не смотрел.)

0 голосов
/ 27 июля 2011

Вы должны включить в ваши данные публикации значение с именем "YII_CSRF_TOKEN", включенное в HTML-форму. или используйте " ClientForm " lib

...