Ich muss Website zu kratzen, die Anmeldung erfordert. Ich versuche, eine session
zu erstellen und mich anzumelden, da ich verschiedene Seiten nach dem Einloggen kratzen muss. Aber kann nicht herausfinden, warum es nicht funktioniert.Python-Anfragen können nicht auf einer Website anmelden
import requests
from bs4 import BeautifulSoup
login_data = {
"log":"login",
"login":"my email",
"password":"my password"
}
session = requests.session()
session.post(login_url, data=login_data)
response = session.get(url)
html = response.text
soup = BeautifulSoup(html, "html.parser")
print(soup.title.get_text())
Titel zeigt, dass es nicht funktioniert.
Hier ist die Website Form.
<form method="post" id="signin-form" class="form-horizontal">
<input type="hidden" name="referer" value="" />
<div class="form-group">
<label for="email_text" class="col-sm-4 control-label">Your login (email):</label>
<div class="col-sm-8">
<input type="email" class="form-control" id="email_text" value="" name="login" autofocus
data-validation='{"parent":".form-group","events":["keyup","blur"],"rules":[{"name":"notblank"},{"name":"email"}]}' />
</div>
</div>
<div class="form-group">
<label for="password_text" class="col-sm-4 control-label">Password:</label>
<div class="col-sm-8">
<input type="password" class="form-control" id="password_text" name="password"
data-validation='{"parent":".form-group","rules":[{"name":"min","min":5}]}' />
</div>
</div>
<div class="form-group">
<div class="col-sm-8 col-sm-offset-4">
<div class="checkbox">
<label>
<input type="checkbox" name="rememberme"> Remember me on this computer
</label>
</div>
</div>
</div>
<div class="form-group">
<div class="col-sm-offset-4 col-sm-8">
<button type="submit" class="btn btn-default btn-lg" name="log">Log into your account</button>
<a class="btn btn-default btn-lg mobile-show-inline-block" href="/account/create/">Create account</a>
<a href="/account/lostpassword" class="btn btn-link btn-lg">Forgot your password?</a>
</div>
</div>
</form>
N. B: Ich schlage vor, mich nicht selenium
zu verwenden. Ich kann dies mit selenium
tun, und ich habe das getestet, aber ich muss bei requests
bleiben, weil selenium
Pop-up-Konsole auch wenn ich PhantomJS
verwenden.
Versuchen Sie, zuerst auf die Anmeldeseite zu gelangen. Vielleicht setzt es einige Cookies, von denen erwartet wird, dass sie auf dem Post vorhanden sind. –
@JohnGordon WOW !! Das funktioniert. Bitte posten Sie es als Antwort. –