问题描述
我正在从 Zoho CRM API 获取数据
import requests
import json
import pandas
refresh_token="xxxx"
client_id="xxxx"
client_secret="xxx"
req1=requests.post("https://accounts.zoho.com/oauth/v2/token?refresh_token=" + refresh_token + "&client_id="+ client_id + "&client_secret=" + client_secret + "&grant_type=refresh_token")
print(req1.status_code)
data=req1.json()
acc_token=data['access_token']
headers= {'Authorization': 'Zoho-oauthtoken '+acc_token}
url="https://www.zohoapis.com/crm/v2/Leads"
r= requests.get(url,headers=headers)
print(r.status_code)
print(r.json())
我收到了回复,但我只能收到 200 条记录。 JSON 响应在末尾具有以下详细信息
'info': {'per_page': 200,'count': 200,'page': 1,'more_records': True}}.
请帮我获取所有记录
解决方法
根据 zoho 文档,您可以提供 page=
和 per_page=
URL 参数以选择您想要阅读的页面以及您需要的结果数量。
以下是您正在调用的端点的文档: https://www.zoho.com/crm/developer/docs/api/v2/get-records.html
及相关参数:
sort_order(字符串,可选)对记录列表进行排序 升序或降序。可能的值:asc - 升序; desc - 降序
sort_by(字符串,可选)指定字段的 API 名称基于 必须对记录进行排序。可能的值:字段 API 名称。 示例:电子邮件
page(整数,可选)从 各自的页面。页的默认值为 1。可能的值: 仅正整数值。
per_page(整数,可选)获取每个可用的记录列表 页。页的默认值为 200。可能的值:正整数 仅值。
调用 https://www.zohoapis.com/crm/v2/Leads?page=2
应该会给你接下来的 200 个结果
在这里,您将使用 pagination
,因为您必须编写类似这样的代码。
more_records = True
page_number = 1
while more_records:
get_url="https://www.zohoapis.com/crm/v2/Leads?page="+str(page_number)
r = requests.get(url=get_url,headers=headers)
for lead in r:
"""YOUR CODE"""
page_number += 1
more_records = r.json()['more_records']