首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >你能源源不断地发到“热”的帖子吗?

你能源源不断地发到“热”的帖子吗?
EN

Stack Overflow用户
提问于 2018-05-23 19:12:35
回答 2查看 1K关注 0票数 3

因此,假设我想从subreddit "news“中发送帖子。然而,这些职位是非常频繁的,我们不能说每一个职位是值得的。因此,我想过滤好的帖子,试图流的“热门”名单。但我不确定这是否可能,或类似的事情是可能的。

通常情况下,这就是我对流帖子所做的:

for submission in subreddit.stream.submissions(): if not submission.stickied: print(str(submission.title) + " " + str(submission.url) + "\n")

这会过滤帖子,但不会流出去:

for submission in subreddit.hot(limit=10): print(str(submission.title) + " " + str(submission.url) + "\n")

那么,对于我如何同时处理和过滤帖子,有什么想法吗?

谢谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-05-29 11:53:20

流热点是一个不协调的想法。

PRAW中的流的目的是在提交给Reddit之后立即获取每个帖子或评论(几乎)。另一方面,热门列表包含的项目被认为是目前感兴趣的,排序的分数多少与分数除以年龄。

然而,这些职位是非常频繁的,我们不能说每一个职位是值得的。

由于Reddit用户看到帖子并对其进行投票需要时间,所以在帖子发布后立即评估一个帖子是否值得(以分数衡量)是没有什么意义的。

如果您的目标是在每一篇文章上执行一些操作,使其进入subreddit的顶部n,您可以在一定的时间间隔内检查头版,对您尚未见过的任何帖子执行操作。例如:

代码语言:javascript
运行
AI代码解释
复制
import praw
import time


reddit = praw.Reddit()  # must be edited to properly authenticate
subreddit = reddit.subreddit('news')
seen_submissions = set()

while True:
    for submission in subreddit.hot(limit=10):
        if submission.fullname not in seen_submissions:
            seen_submissions.add(submission.fullname)
            print('{} {}\n'.format(submission.title, submission.url))
    time.sleep(60)  # sleep for a minute (60 seconds)
票数 4
EN

Stack Overflow用户

发布于 2019-12-01 16:57:14

要添加jarhill0 0的答案,还可以通过在params中指定“后缀”对页面进行分页。

代码语言:javascript
运行
AI代码解释
复制
import praw
import time


reddit = praw.Reddit()  # must be edited to properly authenticate
subreddit = reddit.subreddit('news')
seen_submissions = set()

while True:
    params = None
    for _ in range(10):# get first 10 pages of 'hot'.
        for submission in subreddit.hot(limit=10, params=params):
            if submission.fullname not in seen_submissions:
                seen_submissions.add(submission.fullname)
                print('{} {}\n'.format(submission.title, submission.url))
            params = {"after": submission.fullname}
    time.sleep(60)  # sleep for a minute (60 seconds)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50500360

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档