【问题标题】:How do I collect the maxim amount of records from an API?如何从 API 收集最大数量的记录?
【发布时间】:2020-12-16 05:32:36
【问题描述】:

我是 API 世界的新手。现在我正在使用下面的代码来接收数据。最后,我制作了一个数据框并将其与多个其他数据框连接起来,最终将其导出到 MySQL。但是它只返回 250 条记录,当我在 Postman 中运行相同的 GET 查询并进行计数时,我可以看到例如有 6500 条记录。

这是我的代码:

proxies = {'https': '***.***.***.com:***'}  
acces_token = "this_is_my_token"

headers = {'Authorization': 'Bearer ' + acces_token}    
mod_date =  'ModifiedOn gt 2010-01-01'   

params1 = {'$filter': mod_date, '$select': 'Field1, Field2}     
response1 = requests.get('https://***-***-***.***.com/odata/***', headers=headers, params=params1, proxies=proxies)

q1 = response1.json()
dictio1 = q1['value']

df1 = pd.DataFrame(dictio1)
print(df1)

输出为:

0   - Field 1 - Field 2
1   - x       - x
.   - x       - x
.   - x       - x
250 - x       - x

我的目标是为收集所有 6500 条记录的多个 GET 语句构建多个循环。之后,我将合并这些数据框并将它们导出到 MySQL。

预期的输出是:

0     - Field 1 - Field 2
1     - x       - x
.     - x       - x
.     - x       - x
6500  - x       - x

【问题讨论】:

    标签: python api dataframe python-requests


    【解决方案1】:

    您可以尝试在获取请求中使用参数stream=True。 如果在发出请求时将流设置为 True,则除非您消耗所有数据或调用 Response.close,否则 Requests 无法将连接释放回池中。

    r = requests.get(..., stream=True)
    

    如果这有帮助,请告诉我。

    【讨论】:

    • 你好欧文。感谢您的回复,我添加了stream=True,但仍然获得了前 250 条记录。 next_link 有什么我可以做的吗?
    猜你喜欢
    • 2011-02-22
    • 2020-08-22
    • 1970-01-01
    • 1970-01-01
    • 2014-11-30
    • 2020-09-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多