在Reddit API

时间:2018-03-25 22:05:40

标签: python api get python-requests reddit

我试图使用Reddit的API,我理解其中的大部分内容,但我似乎无法弄清楚如何访问下一页的结果(因为每页都是25页)项)。

以下是我使用的代码:

import requests
import json

r = requests.get(r'https://www.reddit.com/r/Petscop/top.json?sort=top&show=all&t=all')

listing = r.json()

after = listing['data']['after']

data = listing['data']['children']

for entry in data:
    post = entry['data']
    print post['score']

query = 'https://www.reddit.com/r/Petscop/top.json?after='+after
r = requests.get(query)

listing = r.json()

data = listing['data']['children']

for entry in data:
    post = entry['data']
    print post['score']

所以我将after ID提取为after,并将其传递给下一个请求。但是,在前25个条目(第一页)之后,代码只返回一个空列表([])。我尝试将第二个查询更改为:

r = requests.get(r'https://www.reddit.com/r/Petscop/top.json?after='+after)

结果是一样的。我也试过更换""与"之前",但结果再次相同。

有没有更好的方法来获得下一页的结果?

另外,get参数中的r到底是什么?我从一个例子中复制了它,但我不知道它实际意味着什么。我问,因为我不知道是否有必要访问下一页,如果有必要,我不知道如何通过向其添加after来动态修改查询。

1 个答案:

答案 0 :(得分:2)

尝试:

query = 'https://www.reddit.com/r/Petscop/top.json?sort=top&show=all&t=all&after='+after

或更好:

query = 'https://www.reddit.com/r/Petscop/top.json?sort=top&show=all&t=all&after={}'.format(after)

对于字符串中的r,您可以省略它。