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 回答