Python PRAW 包装器,逻辑问题

标签 python api if-statement while-loop reddit

我的目标是从 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/

相关文章:

javascript - 如何向谷歌地图标记添加唯一链接

c - 多次scanf打印最大偶数

python - 在 matplotlib 中对齐条形图

python - 无法在树莓派上安装uinput

在 Java 中使用 TESSERACT API 时出现 java.lang.UnsatisfiedLinkError 异常

javascript - 如何通过 jQuery AJAX 从使用 OAuth 1.0 身份验证的 Upwork API 请求 JSONP 文件?

SWIFT if 语句和 segue

excel - excel 中的 IF ELSE -- 检查单元格是否为 null/空

python - 如何从以前的 celery 任务中产生 celery 任务?

python - 为什么两种寻找素数的算法在速度上相差如此之大,即使它们看起来迭代次数相同?