Как собрать все результаты из веб-API в Python?

Я собираю данные из веб-API с помощью скрипта Python. Веб-API предоставляет максимум 50 результатов ("size":50). Однако мне нужно собрать все результаты. Пожалуйста, дайте мне знать, как я могу это сделать. Мой исходный код доступен ниже. Заранее спасибо.

def getData():
    headers = {
    'Content-type': 'application/json',
    }

    data = '{"size":50,"sites.recruitment_status":"ACTIVE", "sites.org_state_or_province":"VA"}'
    response = requests.post('https://clinicaltrialsapi.cancer.gov/v1/clinical-trials', headers=headers, data=data)

    print(response.json())

2 ответа

Чтобы добавить к уже полученному ответу, вы можете получить итоговые результаты из исходного json. Затем вы можете использовать цикл для увеличения для партий

import requests
import json

url = "https://clinicaltrialsapi.cancer.gov/v1/clinical-trials"
r = requests.get(url).json()
num_results = int(r['total'])
results_per_request = 50
total = 0
while total < num_results:
    total+=results_per_request
    print(total)

Все в доке:

https://clinicaltrialsapi.cancer.gov/

ПОЛУЧИТЬ клинические испытания

Фильтрует все клинические испытания на основе предоставленных параметров фильтра. Параметрами фильтра могут быть любые поля схемы, а также любой из следующих параметров...

размер: ограничить количество результатов указанным количеством (по умолчанию 10, максимум 50)

from: начать результаты с предоставленной начальной точки (по умолчанию 0)

...

Так что вам просто нужно указать значение from и увеличить его на 50 на 50.

Другие вопросы по тегам