2016-08-25 13 views
1

requestsモジュールを使用してPython(2.7)でTwitterにログインしようとしています。ログインした後、Twitterの別のディレクトリにアクセスしたいと考えています。リクエストを使用してTwitterにログイン

ので:

  1. ログイン:https://twitter.com/login
  2. は要素を渡す/ユーザ名を見つけ
  3. 入力のTwitterの資格
  4. ログイン:https://twitter.com/settings/your_twitter_data
  5. 入力Twitterのパスワード

私のコードので、遠い:

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) 

実行すると、これは私が取得エラーです:

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

ルックス、そしてフォーマットはJSONではありません。

次に、あなたがより多くの情報は、requests.Session()を使用する必要があります。 – Keozon

+0

リクエストを使用する代わりに、https://pypi.python.org/pypi/twythonにpython twitter APIラッパーを試してみてください。 – Peter234

+1

Twitterにログインするともっと複雑になります –

答えて

1

あなたはr.json()を使用している応答はHTMLですが、代わりにr.textを試してみてください。

また、ログインに成功したことを知りたい場合は、自分のプロフィール画像などを確認してください。あなたは(文字列ではありません)JSONへの出力を変換しようとしているようhttp://docs.python-requests.org/en/master/user/advanced/

+0

r.json()をr.textに置き換えましたが、トレースバック(直近の最後の呼び出し): ファイル "twitter.py"、行10、 if(r.text()の "success" : TypeError: 'unicode'オブジェクトは呼び出し可能ではありません –

+0

'r.text()'ではなく 'r.text' –

+0

「ログインできませんでした」というメッセージが表示されます。に?たとえば、title == "Twitter"の場合?私はどのようにリクエストでこれをやりますか? –

関連する問題