2017-03-07 22 views
3

私はPRAW 4.4.0でのredditの検索結果を取得するには、次のコードを使用しています:PRAWで100を超える検索結果を取得していますか?

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

私は年までの期間に、subredditからポストの不確定量をこすりしたいのですが。 Redditの検索機能(およびそれに対応するAPI)は、 'after'パラメータでこれを実現します。しかし、上記の検索関数は、 'after'をパラメータとして受け入れません。 100以上の検索結果を得るためにPRAWの.search()を使用する方法はありますか?

答えて

2

はい、パラメータを送信することにより、limit=Noneは1000に増加しますが、時間枠は保証されず、1000を超えることはできません。ただし、クラウド検索構文を使用できます。これは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の結果の制限がありますが、指定された期間のためにあなたは何度も照会することができますfordifferent回。私。 1000回の投稿を取得し、最も古いものからutc_timeを取得し、タイムスタンプの最初のパラメータとしてその時刻を送信します。これにより、最後のクエリが停止した時点から開始する結果が得られます。

関連する問題