我试图使用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
来动态修改查询。
答案 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
,您可以省略它。