我正在使用Mailgun API获取有关特定事件发送的电子邮件数量的一些数据,然后是主题和收件人等消息详细信息
响应限制为300,但我需要数千
我知道我需要使用分页,但我不知道如何使用它。我想它会是这样的:
nextUrl = status['paging']['next']
data = requests.get(nextUrl, auth=("api", API_KEY), params ={"limit":300})
到目前为止,这是我的代码:
import requests
import json
import pandas as pd
delivered = requests.get(
"https://api.mailgun.net/v3/#",
auth=("api", "key-#"),
params={"event" : "delivered",
"limit" : 300})
raw = delivered.json()
items = raw['items']
message_elements = []
for row in items:
message = row['message']
message_elements.append(message)
events = []
for row in items:
event = row['event']
events.append(event)
message_values = []
for row in message_elements:
message_details = row['headers']
message_values.append(message_details)
data = pd.DataFrame(message_values)
data['event'] = events
data
在创建此表时:
现在这个表正是我想要的,但我不想限于300个结果。我可能需要成千上万的
有人可以告诉我如何使用分页来做到这一点吗?
非常感谢
答案 0 :(得分:0)
documentation表示' previous-url'和' next-url'总是回来。
...始终返回下一页和上一页的网址,即使检索其中一个网页也没有意义。有两种情况:第一个结果页面的上一页URL和最后一个结果页面的下一页URL;请求这些URL始终返回空结果页面。 ...
所以,看起来你必须重复拨打电话,例如这样的事情。注意:这是伪代码,只是一个想法:
url = "https://api.mailgun.net/v3/#"
last_next_url = None
while url is not last_next_url:
delivered = requests.get(url,
auth=("api", "key-#"),
params={"event" : "delivered",
"limit" : 300})
...
# TODO: i'm not sure about HTTP response code here:
if delivered.status >= 200 and delivered.status < 300:
url = raw['next_page_url']