Reddit에 로그인하여 내 계정 데이터를 가져 오려고합니다.Reddit API에서 json을 요청할 때 404 오류가 발생했습니다.
이 내 파이썬 코드 :
는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 '{ "오류": 404}'
나는 .json 부분없이 동일한 요청을 할 경우. 나는 'reddit.com : page not found'라는 HTML 코드를 얻었습니다. 그래서 나는 URL에 뭔가 잘못하고 있다고 가정합니다. 하지만 내가 사용하는 URL은 Reddit API에서 지정되는 방식입니다.
내가 PRAW를 사용하지 않는 이유는 결국 C++에서이 작업을 수행 할 수 있기를 원하지만 Python에서 먼저 작동하는지 확인하고 싶었 기 때문입니다.
는
왜'r.content.decode()':
그런 다음 POST 요청 데이터의
modhash
를 사용할 수 있습니까? 'json' 라이브러리는 * 당신을위한 디코딩을 처리합니다. 'json.loads (r.content)'는 괜찮습니다. 또는'client.post()'에'stream = True'를 사용하고 http 소켓에서 직접 라이브러리를 읽게하려면'json.load (r.raw)'를 사용하십시오 (데이터 압축시 작동하지 않을 수도 있음). –또한 'client.modhash'는 무엇입니까? 그것은 서버로 전달되지 않습니다. –
3.3에서는 .decode 없이는 작동하지 않습니다. - decode()는 UTF-8로 디코딩합니다. – user970922