我的目标是从 Reddit 获取顶部提交,将其附加到数组中,然后获取第二个顶部提交、第三个、第四个等等。我使用 place_holder 来获取下一个提交,其中第一次有效,但随后只是循环一遍又一遍地获得相同的第二次提交。
当前输出为
帖子 1
帖子2
帖子2
等等
当我想要输出时
帖子 1
帖子2
帖子 3
帖子 4
等等
这是我的代码:
import praw, time
r = praw.Reddit(user_agent='ADNPost')
already_done = []
while True:
for submission in r.get_top(limit=1):
id = submission.id
title = submission.title
url = submission.short_link
save_state = (id)
if id not in already_done:
already_done.append(submission.id)
post = title + " | " + url
print post
print save_state
if id in already_done:
for submission in r.get_front_page(limit=1, place_holder=submission.id):
id = submission.id
title = submission.title
url = submission.short_link
print title, url
save_state = (id)
already_done.append(submission.id)
time.sleep(2)
最佳答案
您忘记了 time.sleep 来遵守 Reddit 政策
为了提高效率,我用一组替换了 already_done
基本思想是在提交已经完成的情况下获取新的提交
import praw, time
r = praw.Reddit(user_agent='ADNPost')
already_done = set()
while True:
l = r.get_top(limit=1)
submission = next(l,None)
if not submission:
continue
while submission.id in already_done:
submission=next(r.get_front_page(limit=1, params={'after':submission.fullname}),None)
if not submission:
break
if submission:
id = submission.id
title = submission.title
url = submission.short_link
print (title, url)
save_state = (id)
already_done.add(submission.id)
time.sleep(2)
编辑:测试place_holder不是你想要的(“t3_”是一个看起来有效的常量
编辑2:根据@bboe命题将“t3_”+submission.id替换为submission.fullname
关于Python PRAW 包装器,逻辑问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16263217/