我试图在我自己的服务器上创建一个特定主持人页面(即受限制)的镜像,以实现透明度。不幸的是,我的python-fu很弱,在使用reddit API its python wrapper甚至some answers in here进行了一些努力之后,我没有更接近于使用有效的解决方案。
所以我需要做的是登录reddit与特定用户,访问仅限主持人的页面并将其html复制到我自己的服务器上的文件以供其他人访问
我遇到的问题是API和它的包装器没有很好的文档记录,因此我无法找到登录后检索reddit页面的方法。如果我可以做到这一点,理论上我可以将结果复制到我服务器上的一个简单的html页面。
当尝试在python API之外进行时,我无法弄清楚如何使用python的内置模块登录,然后阅读受限制的页面。
任何帮助表示感谢。
答案 0 :(得分:0)
我不使用PRAW,所以我不确定,但如果我要做你想做的事情,我会做类似的事情:登录,保存modhash,从网址中抓取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)