我的消息对象有超过1000条记录。
在我的代码中,我正在循环并从特定的"发送自"电话号码。我收回记录,然后显示发送的收件人电话号码和索引号码,以便更轻松地计算返回的记录数。
我知道有超过1000条记录,但它会在1000处停止。我怎样才能获得更多记录?
我一直在使用Twilio支持,他们派我到这里询问,因为他们不是Python精通。
这是我现在的代码(我当然拿出了敏感的帐户信息):
import requests
import json
r = requests.get('https://api.twilio.com/2010-04-01/Accounts/AccountSID/Messages.json?DateSent=2017-09-28&From=PhoneNumber&PageSize=10000', auth=('AccountSID', 'AuthToken'))
json_parsed = json.loads(r.text)
var = 0
var2 = 0
while var < 10000:
var1 = var
if (json_parsed['messages'][var1]['from']) == "+PhoneNumber":
print "From:" + " " + json_parsed['messages'][var1]['from']
print "To::" + " " +json_parsed['messages'][var1]['to']
print "\n"
vartotal = var1 + 1
print vartotal
var = var1 + 1
答案 0 :(得分:1)
Twilio REST API限制了您可以返回的记录数量。你需要使用分页。关键变量为in the Twilio Paging documentation,但只需在网址中添加Page
参数。
所以你会得到1000页。如果确切地返回1,000,则处理并请求下一页。如果返回的数量少于1,000,则跳出循环。
您还可以查找JSON中返回的nextpageuri
。如果有,请关注它。
答案 1 :(得分:0)
这是您的代码,但写得不错:
import requests
import json
r = requests.get('https://api.twilio.com/2010-04-01/Accounts/AccountSID/Messages.json?DateSent=2017-09-28&From=PhoneNumber&PageSize=10000', auth=('AccountSID', 'AuthToken'))
for i, message in enumerate(json.loads(r.text)['messages']):
if message['from'] == "+PhoneNumber":
print "From: {}".format(message['from'])
print "To: {}".format(message['to'])
print
print i + 1
使用for
循环让它处理计数器变量并迭代您请求的完整大量消息。使用"".format()
格式化字符串。
您遇到的问题是您要请求10000封邮件:(&#39; https://api.twilio.com/2010-04-01/Accounts/AccountSID/Messages.json?DateSent=2017-09-28&From=PhoneNumber&PageSize=10000&#39;)Twilio API的工作方式据我所知,但它可能具有最大价值对于此设置,您无法获取那么多。如果这是真的,他们会有某种页面设置,允许你获取下一条X消息,可能是通过指定消息从哪里开始和你想要的安装。