Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/api/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python PRAW包装器,逻辑问题_Python_Api_If Statement_While Loop_Reddit - Fatal编程技术网

Python PRAW包装器,逻辑问题

Python PRAW包装器,逻辑问题,python,api,if-statement,while-loop,reddit,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:

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

您忘记了时间。请按照reddit策略睡眠

为了提高效率,我把已经完成的工作换成了一套

基本思想是在提交已经完成的情况下获得新的提交

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)
编辑:测试的占位符不是您想要的(“t3”是一个看起来有效的常数)


编辑2:根据@bboe建议,将“t3_”+submission.id替换为submission.fullname

您忘记了时间。请睡眠以遵守reddit策略

为了提高效率,我把已经完成的工作换成了一套

基本思想是在提交已经完成的情况下获得新的提交

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)
编辑:测试的占位符不是您想要的(“t3”是一个看起来有效的常数)


编辑2:根据@bboe提议将“t3_uu“+submission.id”替换为submission.fullname

时间。使用PRAW时不需要睡眠。此外,
之后的
也不是您想要用来获得“更新”或“更高”的内容物品。
before
适用于此。谢谢!这正是我想要的!
时间。使用PRAW时不需要睡眠。
before
也不是你想要用来获取“更新”或“更高”物品的。
before
适用于此。谢谢!这正是我想要的!