如何使用Confluence API get_all_pages_from_space获取空间全部页面
循环拉取逻辑实现
核心思路
- 固定单次请求的
limit为官方允许的最大值100,减少请求次数 - 初始化偏移量
start为0,每次请求完成后将start累加100 - 当单次请求返回的页面数量小于100时,说明已经拉取完全部页面,终止循环
- 每次请求拿到的页面结果统一合并到总列表中存储
完整代码示例
from atlassian import Confluence import time # 如需加延迟可引入 # 初始化Confluence客户端(替换为你自己的实例配置) confluence = Confluence( url='https://你的Confluence域名', username='你的账号', password='你的API Token/登录密码' ) # 拉取配置 SPACE_KEY = "目标空间的标识" # 替换为实际要拉取的空间Key SINGLE_REQUEST_LIMIT = 100 all_pages = [] current_start = 0 while True: # 拉取当前批次页面 current_batch = confluence.get_all_pages_from_space( space=SPACE_KEY, start=current_start, limit=SINGLE_REQUEST_LIMIT, # 需要拉取页面内容、版本等信息可自定义expand参数,示例:expand="body.storage,version" ) all_pages.extend(current_batch) # 返回结果小于单次请求上限,说明已经拉完所有页面 if len(current_batch) < SINGLE_REQUEST_LIMIT: break # 偏移量更新,准备下一批请求 current_start += SINGLE_REQUEST_LIMIT # 页面量很大的场景可加延迟避免触发限流:time.sleep(0.5) # 结果验证 print(f"总计拉取页面数:{len(all_pages)}")
常见问题说明
- 只能拉取到50个页面的问题:部分旧版本SDK默认
limit参数值为50,手动指定limit=100即可解决 - 需要拉取博客内容的场景,调用接口时添加
content_type='blogpost'参数即可
内容的提问来源于stack exchange,提问作者ChinaMahjongKing
相关产品推荐
相关产品推荐

