如何从 Stack Exchange API 获取大量数据?

How get larger amount of data from Stack Exchange API?

Stack Exchange API returns 每个请求只有 30 个项目。我使用 for 循环调用堆栈交换 API 如下所示,以获得 4500 条记录。

import requests
complete_data=[]
for i in range (150):
    response = requests.get("https://api.stackexchange.com/2.2/questions?order=desc&sort=activity&site=Whosebug")
    newData=json.loads(response.text)
    for item in newData['items']:
        complete_data.append(item)

但是在分析我从 API 得到的问题时,相同的数据集被接收了 150 次。所以我在代码中为每个数据请求收到了相同的数据集。我需要有近 5000 条记录来分析数据。谁能告诉我应该对我的代码做哪些更改?

您实际上在每个请求和同一页面(第一个页面)中获取 30 个项目。为了解决问题定义pagesize (max 100, min 1) and page (i + 1)

import requests
import time

complete_data=[]
for i in range (45):
    response = requests.get("https://api.stackexchange.com/2.2/questions?order=desc&sort=activity&site=Whosebug&pagesize=100&page=" + str(i + 1))
    newData=json.loads(response.text)
    for item in newData['items']:
        complete_data.append(item)
    print("Processed page " + str(i + 1) + ", returned " + str(response))
    time.sleep(2) # timeout not to be rate-limited

备注:

  • 添加 2 秒超时以防止 rate-limiting
  • 您可能需要获取 API 密钥以将您的配额从 300 增加到 10000。
  • 如果您尝试获取 180 多页,您可能会得到 an error!。