2017-05-02 1 views
0

Ich versuche, auf eine Website einzuloggen python-Anfragen verwenden, aber nicht unter dem Code zu anmelden scheinen mit:Scraping mit Login

import requests 

session = requests.Session() 
data = {'j_username': '[email protected]'} 
session.post('http://www.broadinstitute.org/gsea/login.jsp', data=data) 
r = session.get('http://www.broadinstitute.org/gsea/msigdb/genesets.jsp? 
collection=CP:BIOCARTA') 
print(r.content) 

glaube ich nicht, dass ich etwas tue, falsch hier, obwohl , als ich einige Beiträge online verfolgt habe.

+0

Es ist wahrscheinlich wegen der Daten, die Sie veröffentlichen, Sie sind nur Ihre E-Mail-Adresse, ohne ein Passwort, und die Website möglicherweise auch andere Daten benötigen. –

+0

es erfordert kein Passwort, nur eine E-Mail – nmentenson

+0

Mögliche Duplikat von [Login auf Website über Python-Anfragen] (http://StackOverflow.com/Questions/36665226/Login-to-Website-Via-Python-Requests) – direprobs

Antwort

0

Der beste Weg, um herauszufinden, was es braucht, ist die Debugger-Konsole öffnen und klicken Sie auf Netzwerk-Registerkarte, und sehen, was passiert, wenn Sie die E-Mail füllen und klicken Sie auf Login. Ja, es dauert nur E-Mails, aber intern sendet es auch den anderen Parameter.

sehen: Sie können sehen, was sind die Paramter Sie brauchen, und mit dem, was Name: enter image description here Sie passieren müssen: j_username und j_password: ‚password‘ wo j_username ist der Benutzername, den Sie eingegeben haben.

Ein weiteres Problem ist: Ihre Post-Anforderung sollte hier mit Daten übergeben werden: http://software.broadinstitute.org/gsea/j_spring_security_check

enter image description here

Es sieht aus wie Sie wissen nicht, wie Element verwenden inspizieren .Alle die Bilder von inspizieren window.Use that

0

Auf der Anmeldeseite befindet sich ein verstecktes Eingabefeld, das 'j_password' ist und dessen Wert konstant 'password' ist. Und Sie sollten nicht login.jsp posten, aber es zu dieser URL: http://software.broadinstitute.org/gsea/j_spring_security_check

import requests 

session = requests.Session() 
data = {'j_username': '[email protected]', 'j_password': 'password'} 
session.post('http://software.broadinstitute.org/gsea/j_spring_security_check', data=data) 
r = session.get('http://www.broadinstitute.org/gsea/msigdb/genesets.jsp?collection=CP:BIOCARTA') 
print(r.content) 

ich ein Programm verwenden Fiddler rief mir zu helfen, zu sehen, was im Hintergrund passiert. Es ist wirklich hilfreich!