0

Reddit にログインして、自分のアカウント データを取得しようとしています。

これは私のPythonコードです:

from pprint import pprint
import requests
import json
username = 'dirk_b'
password = 'willnottell'
user_pass_dict = {'user': username,
      'passwd': password,
      'api_type': 'json',
      'rem': True, }
headers = {'dirkie': '/u/dirk_b API python test', }
client = requests.session()
client.headers = headers
r = client.post(r'http://www.reddit.com/api/login', data=user_pass_dict)
j = json.loads(r.content.decode());
client.modhash = j['json']['data']['modhash']
s = client.post(r'http://www.reddit.com/api/me.json', data=user_pass_dict)
pprint(s.content)

私が得る応答は次のとおりです: b'{"error": 404}'

.json 部分なしで同じリクエストを行う場合。「reddit.com: ページが見つかりません」という HTML コードが大量に表示されます。したがって、URLに何か問題があると思います。しかし、私が使用している URL は、Reddit API で指定されている方法です。

私が PRAW を使用していない理由は、最終的には C++ でこれを実行できるようにしたいためですが、最初に Python で動作することを確認したかったからです。

4

1 に答える 1

2

ルートは GET リクエストのみを受け入れます/api/me.json

s = client.get('http://www.reddit.com/api/me.json')

そのエンドポイントには POST ルートがないため、404 が返されます。

また、サーバーに渡す必要がある場合modhashは、POST リクエストで渡されるデータで行います。設定は、そのパラメーターをサーバーに渡しclient.modhashません。GET 応答から modhash を取得します。me.json

r = client.get('http://www.reddit.com/api/me.json')
modhash = r.json()['modhash']

からの応答requestsにメソッドがあることに注意してください。モジュールを自分.json()で使用する必要はありません。json

次に、modhashin POST 要求データを使用します。

client.post('http://www.reddit.com/api/updateapp', {'modhash': modhash, 'about_url': '...', ...})
于 2013-06-22T19:09:19.093 に答える