Как собрать все результаты из веб-API в Python? - PullRequest
0 голосов
/ 15 апреля 2019

Я собираю данные из веб-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 ]

1 голос
/ 16 апреля 2019

Чтобы добавить к уже полученному ответу, вы можете получить итоговые результаты исходного 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)
1 голос
/ 15 апреля 2019

Все в документе:

https://clinicaltrialsapi.cancer.gov/#!/Clinical45trials/searchTrialsByGet

GET клинических испытаний

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

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

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

...

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

...