0

我正在使用 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())
4

2 回答 2

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)
于 2019-04-16T06:26:15.013 回答
1

一切都在文档中:

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

获得临床试验

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

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

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

...

所以你只需要指定一个“from”值,然后将它增加 50 到 50。

于 2019-04-15T20:18:52.563 回答