使用Python获取Stack Overflow全部问题时响应上限500如何解决
StackAPI返回上限调整方法
500条返回上限由StackAPI的默认参数设置导致:
- 库默认配置
max_pages=5,搭配Stack Exchange官方API单页最大返回条数pagesize=100,5*100=500即为默认返回上限。 - 可在初始化实例时调整参数解除该限制,参考代码如下:
from stackapi import StackAPI SITENAME = 'stackoverflow' # 调高max_pages参数,同时将单页返回条数设为官方允许的最大值100 SITE = StackAPI(SITENAME, max_pages=100) SITE.page_size = 100 # 建议搭配fromdate、todate时间戳参数按时间切片拉取,避免单次请求范围过大触发接口限制 questions = SITE.fetch('questions', fromdate=1672531200, todate=1675209600) print(len(questions))
注意:调整参数仅绕开了库的默认限制,仍受Stack Exchange官方API配额约束:未申请密钥的IP单日请求配额为300次,申请密钥后单日配额为10000次,超出配额会被临时限制请求。
全量采集Stack Overflow问题的替代方案
如果需要采集全站所有问题,不建议通过API方式实现:Stack Overflow全站问题总量超过2000万,API请求成本极高、效率极低,且很容易触发配额封禁。
Stack Exchange官方按季度公开全站数据导出包,包含所有历史问题、回答、用户、评论等全量结构化数据,格式为XML,可直接下载导出包后本地解析提取所需字段,无需发起接口请求。
内容的提问来源于stack exchange,提问作者Biggy Poopa
相关产品推荐
相关产品推荐

