这个话题稍微有点晚了(好吧,是它的延伸部分 :p),但我也曾想从 Discourse 论坛抓取数据,又不想折腾设置 API 密钥。如果你(或任何人)想要一个简单的封装工具来从任意 Discourse 论坛抓取帖子,可以看看这个 链接。
已发布到 PyPi,使用 pip/uv 安装非常方便,自动处理速率限制,并用 Pydantic 进行了类型注解(我认为这能带来更好的开发体验)。用法如下:
from discourse_reader import DiscourseClient
client = DiscourseClient("https://meta.discourse.org")
# 浏览分类
for cat in client.categories():
print(f"{cat.name}: {cat.topic_count} 个主题")
# 获取某个主题及其所有帖子
topic = client.topics.get(12345)
print(topic.title)
print(topic.opening_post.cooked) # 原始帖子(HTML)
print(topic.accepted_answer) # 已采纳的回答或 None
for reply in topic.posts.replies():
print(reply.username, reply.cooked)
它不如 pydiscourse 功能全面,但这是有意为之,因为它无需 API 密钥即可运行。当然,它也不会比数据探索器插件提供更优或更快的数据,但如果你只是想快速抓取一批帖子或简单的站点统计信息,我觉得它还是很不错的 ![]()