python - 使用 PRAW 获得超过 100 个搜索结果?

标签 python reddit praw

我使用以下代码通过 PRAW 4.4.0 获取 reddit 搜索结果:

params = {'sort':'new', 'time_filter':'year'}
return reddit.subreddit(subreddit).search('', **params)

我想从 subreddit 中无限量地抓取帖子,最多一年。 Reddit 的搜索功能(以及相应的 API)通过“after”参数实现了这一点。但是,上述搜索功能不接受“after”作为参数。有没有办法使用PRAW的.search()获取100多个搜索结果?

最佳答案

是的,通过发送参数 limit=None 会将其增加到 1000,但不能保证任何时间范围并且无法获取超过 1000 的数据。但是您可以使用 cloudsearch 语法。在 reddit wiki https://www.reddit.com/wiki/search#wiki_cloudsearch_syntax 中有详细描述。并且是非常强大的搜索增强器。

为了用一些代码支持它,可以通过这种方式实现像这种情况的示例用法:

import datetime
params = {'sort':'new', 'limit':None, 'syntax':'cloudsearch'}
time_now = datetime.datetime.now()
return reddit.subreddit(subreddit).search('timestamp:{0}..{1}'.format(
    int((time_now - datetime.timedelta(days=365)).timestamp()),
    int(time_now.timestamp())),
    **params)

每个查询限制为 1000 个结果,但由于指定的时间范围,您可以针对不同的时间范围查询多次。 IE。抓取 1000 个提交,从最旧的提交中获取 utc_time 并将该时间作为时间戳的第一个参数发送,这将为您提供从上次查询停止的时间点开始的结果。

关于python - 使用 PRAW 获得超过 100 个搜索结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42658676/

相关文章:

python - 从没有 'submissions' 的 subreddit 获取所有提交

python - 是否可以遍历除特定子集之外的所有字典键?

python - 转换 Pandas 数据框中的分类数据

c# - 将 json 转换为自定义对象数组

python - 使用 python PRAW 提取 reddit 评论并使用结果创建数据框

python - 如何使用praw获取线程标题?

python - Unicode编码错误: 'charmap' codec can't encode character '\U0001f937' in position 0: character maps to <undefined>

python - threading.Lock.acquire() 在此实现中如何阻塞?

python - 绘图 : Shared axes and no space between subplots

javascript - Reddit 搜索 API 网址?