如何使用python镜像reddit主持人页面

时间:2012-06-27 15:11:05

标签: python session-cookies mirror reddit

我试图在我自己的服务器上创建一个特定主持人页面(即受限制)的镜像,以实现透明度。不幸的是,我的python-fu很弱,在使用reddit API its python wrapper甚至some answers in here进行了一些努力之后,我没有更接近于使用有效的解决方案。

所以我需要做的是登录reddit与特定用户,访问仅限主持人的页面并将其html复制到我自己的服务器上的文件以供其他人访问

我遇到的问题是API和它的包装器没有很好的文档记录,因此我无法找到登录后检索reddit页面的方法。如果我可以做到这一点,理论上我可以将结果复制到我服务器上的一个简单的html页面。

当尝试在python API之外进行时,我无法弄清楚如何使用python的内置模块登录,然后阅读受限制的页面。

任何帮助表示感谢。

1 个答案:

答案 0 :(得分:0)

我不使用PRAW,所以我不确定,但如果我要做你想做的事情,我会做类似的事情:登录,保存modhash,从网址中抓取HTML你想去的地方:

当我保存它时,它看起来似乎缺少一些CSS或其他什么东西,但它已经足够可识别了。您需要requests模块,以及pprintjson

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)