我使用以下代码通过 PRAW 4.4.0 获取 reddit 搜索结果:
params = {'sort':'new', 'time_filter':'year'}
return reddit.subreddit(subreddit).search('', **params)
我想从 Reddit 子版块中抓取无限量的帖子,持续时间最长为一年。 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
从最旧的时间开始并将该时间作为时间戳的第一个参数发送,这将为您提供从上次查询停止的时间点开始的结果。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)