Dre*_*ght 6 python reddit praw
我使用下面的代码以获得与PRAW 4.4.0 reddit的搜索结果:
params = {'sort':'new', 'time_filter':'year'}
return reddit.subreddit(subreddit).search('', **params)
Run Code Online (Sandbox Code Playgroud)
我想从subreddit上刮取无限量的帖子,最长期限为一年。reddit的的搜索功能(相应的,其API)实现了这一与“后”的参数。然而,上述搜索功能不接受“后”作为一个参数。有没有办法使用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)
Run Code Online (Sandbox Code Playgroud)
每个查询限制为 1000 个结果,但由于指定的时间范围,您可以针对不同的时间范围多次查询。即抓取 1000 次提交,utc_time从最旧的提交中获取并将该时间作为时间戳的第一个参数发送,这将为您提供从上次查询停止的时间点开始的结果。