Я пишу небольшой кусочек кода на Python, чтобы войти на несколько сайтов "Investing" и получить текущую сумму вложенных денег. Я использую библиотеку запросов pythons и анализирую html-источник, чтобы определить форму и поля для заполнения.
Итак, форма может выглядеть так:
<form class="onboarding-form" id="loginForm" action="https://estateguru.co/portal/login/authenticate" method="post" data-redirect="https://estateguru.co/portal/home">
<div class="row">
<div class="col-md-6">
<div class="form-group">
<input type="text" class="form-control main-input" name="username">
<label class="bmd-label-floating main-label">E-Mail</label>
<em id="username-error" class="error bmd-help help-block" style="display:none;">This field is required.</em>
</div>
</div>
<div class="col-md-6">
<div class="form-group">
<input type="password" class="form-control main-input login-pass" name="password">
<label class="bmd-label-floating main-label long-label">Passwort (Mindestens 8 Zeichen)</label>
<em id="password-error" class="error bmd-help help-block" style="display:none;">This field is required.</em>
<a href="#" class="show-pass-icon"><i class="zmdi zmdi-eye"></i></a>
</div>
</div>
</div>
В этом случае мой код выглядит так:
import requests
_username = 'xxx'
_password = 'yyy'
loginUrl = 'https://estateguru.co/portal/login/authenticate'
readUrl = 'https://estateguru.co/portal/portfolio/overview'
with requests.session() as s:
payload = {"username": _username, "password": _password}
final = s.post(loginUrl, data = payload)
result = s.get(readUrl)
print(result)
Это работает как очарование для многих сайтов! Но теперь у меня есть веб-сайт без «method = post» в форме, поэтому я не знаю, как передать данные формы.
Html-часть (от http://www.reinvest24.com/en/login) выглядит так:
<form>
<div class="form-group">
<input type="text" id="email" placeholder="Email" value="" name="email" maxLength="100" class="form-control"/>
</div>
<div class="form-group">
<input type="password" id="password" placeholder="Password" value="" name="password" maxLength="100" class="form-control"/>
</div>
<p class="forgot text-right">
<a href="/en/forgot-password"><span>Forgot password?</span></a>
</p>
<input type="submit" class="btn btn-success" value="Login"/>
<p class="reg text-center">
<span>Don't have an account?</span>
<a href="/en/registration">
<span>Sign up</span></a>
</p>
</form>
Так что без уточнения метода я попробовал
final = s.get(loginUrl, data = payload)
но безуспешно. Результатом в обоих случаях является html-вывод, в котором говорится что-то вроде «Загрузка деталей авторизации ...».
Итак, мой вопрос: я пропускаю правильный метод (POST / GET) для передачи данных или я пропускаю какой-то другой параметр? Некоторым веб-сайтам необходим токен сеанса, который я удаляю с самого сайта входа в систему (как в случае https://www.mintos.com/de/login),, но, на мой взгляд, здесь проблема не в этом.