如何使用Python从Web API收集所有结果?

时间:2019-04-15 20:13:30

标签: python python-3.x python-2.7 python-requests python-responses

我正在使用Python脚本从Web API收集数据。 Web 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 个答案:

答案 0 :(得分:1)

所有内容都在文档中:

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

获取临床试验

  

根据提供的过滤器参数过滤所有临床试验。过滤   参数可以是架构中的任何字段,也可以是   遵循参数...

     

size:限制所提供结果的数量(默认值为10,   最多为50)

     

from:从提供的起点开始结果(默认为0)

     

...

因此,您只需要指定一个“起始”值,然后将其50增加50。

答案 1 :(得分:1)

要添加到已经给出的答案中,您可以从初始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)