因此,假设我想从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")
那么,对于我如何同时处理和过滤帖子,有什么想法吗?
谢谢
发布于 2018-05-29 11:53:20
流热点是一个不协调的想法。
PRAW中的流的目的是在提交给Reddit之后立即获取每个帖子或评论(几乎)。另一方面,热门列表包含的项目被认为是目前感兴趣的,排序的分数多少与分数除以年龄。
然而,这些职位是非常频繁的,我们不能说每一个职位是值得的。
由于Reddit用户看到帖子并对其进行投票需要时间,所以在帖子发布后立即评估一个帖子是否值得(以分数衡量)是没有什么意义的。
如果您的目标是在每一篇文章上执行一些操作,使其进入subreddit的顶部n,您可以在一定的时间间隔内检查头版,对您尚未见过的任何帖子执行操作。例如:
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)
发布于 2019-12-01 16:57:14
要添加jarhill0 0的答案,还可以通过在params中指定“后缀”对页面进行分页。
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)
https://stackoverflow.com/questions/50500360
复制相似问题