2016-08-25 2 views
1

Ich versuche, mit requests Modul in Python (2.7) zu Twitter anmelden, und nachdem ich eingeloggt bin, möchte ich ein anderes Verzeichnis auf Twitter besuchen.Bei Twitter mit Anfragen anmelden

So:

  1. Besuch: https://twitter.com/login
  2. Benutzernamen Locate/Elemente passieren
  3. Eingangs Twitter Credentials
  4. Besuch: https://twitter.com/settings/your_twitter_data
  5. Eingang Twitter Passwort

Mein Code so weit:

import requests 
import sys 
import os 

#LOGIN 
data = {"session[username_or_email]":"MY_USERNAME", 
    "session[password]":"MY_PASSWORD"} 
r = requests.post("https://twitter.com/login/", data=data) 

if ("success" in r.json()): 
    print "Logged in successfully!" 
else: 
    print "Failed to login!" 
    sys.exit(0) 

#CHANGE URL AND INPUT PASSWORD 
data = {"auth_password":"MY_PASSWORD"} 
r = requests.post("https://twitter.com/settings/your_twitter_data", data=data) 

if ("success" in r.json()): 
    print "Success!" 
    sys.exit(0) 

Wenn er gestartet wird, ist dies der Fehler erhalte ich:

Traceback (most recent call last): 
    File "twitter.py", line 10, in <module> 
    if ("success" in r.json()): 
    File "/usr/lib/python2.7/dist-packages/requests/models.py", line 808, in json 
    return complexjson.loads(self.text, **kwargs) 
    File "/usr/lib/python2.7/dist-packages/simplejson/__init__.py", line 516, in loads 
    return _default_decoder.decode(s) 
    File "/usr/lib/python2.7/dist-packages/simplejson/decoder.py", line 373, in decode 
    raise JSONDecodeError("Extra data", s, end, len(s)) 
simplejson.scanner.JSONDecodeError: Extra data: line 1 column 5 - line 1 column 81 (char 4 - 80) 
+0

Sieht aus wie Sie versuchen, den Ausgang zu json konvertieren (die kein String) und das Format ist nicht JSON. – Keozon

+0

Vielleicht möchten Sie https://pypi.python.org/pypi/twython einen Python twitter API-Wrapper ausprobieren, anstatt Anfragen zu verwenden. – Peter234

+1

Es gibt viel mehr beteiligt bei der Anmeldung bei Twitter –

Antwort

1

Sie verwenden r.json() obwohl Antwort HTML, versuchen r.text statt.

Auch wenn Sie wissen möchten, dass Sie erfolgreich angemeldet sind, würden Sie lieber nach Ihrem Profilbild oder etwas Ähnlichem suchen.

Dann sollten Sie requests.Session(), weitere Informationen gibt verwenden: http://docs.python-requests.org/en/master/user/advanced/

+0

Ich ersetzte r.json() durch r.text aber ich bekam: Traceback (letzter Aufruf zuletzt): Datei "twitter.py", Zeile 10, in if ("Erfolg" in r.text()) : TypeError: 'Unicode' -Objekt ist nicht aufrufbar –

+0

'r.text', nicht' r.text() ' –

+0

Okay, aber ich bekomme immer wieder" Login fehlgeschlagen! "... Wie sollte ich überprüfen, ob ich eingeloggt bin im? Zum Beispiel, wenn title == "Twitter"? Wie würde ich das in Anfragen tun? –

Verwandte Themen