Category API 请求下载所有主题

我正在创建关于我们的论坛使用情况的分析,并下载每个类别的主题信息。

但是,请求并非每次都能拉取所有主题。我之所以注意到这一点,是因为之前拉取的一些主题现在从我最新的报告中消失了。

示例:

当我在浏览器中打开类别页面时,该主题就在那里。

我使用的代码:

from dotenv import load_dotenv
import os
import requests

load_dotenv()

headers = {
    "Content-Type": "application/json",
    "Api-Username": os.environ["USERNAME"],
    "Api-Key": os.environ["API_KEY"],
}

method = "GET"
url = "https://forum.aragon.org/c/proposals-for-main-dao/50.json"

response = requests.request(method, url, headers=headers)
topics = response.json()["topic_list"]["topics"]

found_topics = list()
for topic in topics:
    found_topics.append(topic["id"])

print(sorted(found_topics))

{topic: topic in found_topics for topic in [3519, 3528]}
>>>
[3075, 3224, 3299, 3312, 3449, 3472, 3474, 3526, 3554, 3555, 3557, 3583, 3586, 3592, 3613, 3624, 3626, 3659, 3674, 3677, 3680, 3694, 3695, 3699, 3702, 3710, 3716, 3720, 3725, 3737]

{3519: False, 3528: False}

为什么会发生这种情况,我该如何解决?

那么您应该使用数据浏览器插件。

请参阅 Discourse 数据浏览器如何使用 Discourse API 运行数据浏览器查询

1 个赞

谢谢,但目前我们无法安装该插件。我们能做什么来修复 API?

这是一个官方、稳定且维护良好的插件,是什么阻止您安装它?

UI 使用分页系统来下拉每个主题集。这可能是您看不到所有主题的原因。

检查您的浏览器发送的查询,了解每个调用的示例(请参阅网络选项卡)。

然而,正如 @pfaffman 正确指出的那样,这并不是获取数据进行分析的最合适方式,因为它针对 UI 进行了优化。

1 个赞