1

透明性を確保するために、自分のサーバー上にサブレディットの特定のモデレーターページ(つまり制限付き)のミラーを作成しようとしています。残念ながら、私のpython-fuは弱く、reddit API、そのpythonラッパー、そしてここにあるいくつかの答えでさえ少し苦労した後、私は実用的な解決策を手に入れることに近づいていません。

したがって、私がする必要があるのは、特定のユーザーでredditにログインし、モデレーター専用ページにアクセスし、そのhtmlを自分のサーバー上のファイルにコピーして他のユーザーがアクセスできるようにすることです。

私が遭遇している問題は、APIとそのラッパーが十分に文書化されていないため、ログイン後にredditページを取得する方法があるかどうかがわかりません。それができれば、理論的にはコピーできます。サーバー上の単純なhtmlページになります。

Python APIの外部でそれを行おうとすると、Pythonの組み込みモジュールを使用してログインし、制限されたページを読み取る方法がわかりません。

助けていただければ幸いです。

4

1 に答える 1

0

私はPRAWを使用していないので、それについてはわかりませんが、あなたがやりたいことをするなら、次のようなことをします:ログインし、modhashを保存し、あなたの場所のURLからHTMLを取得します行きたい:

また、保存するとCSSか何かが抜けているように見えますが、そのままでも十分認識できます。requestsと一緒にモジュールpprintが必要になりますjson

import requests, json
from pprint import pprint as pp2

#----------------------------------------------------------------------
def login(username, password):
    """logs into reddit, saves cookie"""

    print 'begin log in'
    #username and password
    UP = {'user': username, 'passwd': password, 'api_type': 'json',}
    headers = {'user-agent': '/u/STACKOVERFLOW\'s API python bot', }

    #POST with user/pwd
    client = requests.session()
    r = client.post('http://www.reddit.com/api/login', data=UP)

    #if you want to see what you've got so far
    #print r.text
    #print r.cookies

    #gets and saves the modhash
    j = json.loads(r.text)
    client.modhash = j['json']['data']['modhash']
    print '{USER}\'s modhash is: {mh}'.format(USER=username, mh=client.modhash)

    #pp2(j)

    return client


client = login(USER, PASSWORD)

#mod mail url
url = r'http://www.reddit.com/r/mod/about/message/inbox/'
r = client.get(url)

#here's the HTML of the page
pp2(r.text)
于 2012-06-27T15:23:16.510 に答える