如何使用Python从Twilio获取1000多条消息记录
我的消息对象有1000多条记录 在我的代码中,我循环浏览并从特定的“发件人”电话号码中挑选记录。我把记录拿回来,然后显示发信人和接收人的电话号码以及一个索引号码,以便更容易地计算返回的记录数 我知道有1000多张唱片,但它停在1000张。我怎样才能得到更多的唱片 我一直在与Twilio支持部门合作,他们派我来这里询问,因为他们不精通Python 以下是我现在拥有的代码(当然,我已经删除了敏感帐户信息):如何使用Python从Twilio获取1000多条消息记录,python,json,twilio,Python,Json,Twilio,我的消息对象有1000多条记录 在我的代码中,我循环浏览并从特定的“发件人”电话号码中挑选记录。我把记录拿回来,然后显示发信人和接收人的电话号码以及一个索引号码,以便更容易地计算返回的记录数 我知道有1000多张唱片,但它停在1000张。我怎样才能得到更多的唱片 我一直在与Twilio支持部门合作,他们派我来这里询问,因为他们不精通Python 以下是我现在拥有的代码(当然,我已经删除了敏感帐户信息): 导入请求 导入json r=请求。获取('https://api.twilio.com/20
导入请求
导入json
r=请求。获取('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
var<10000时:
var1=var
如果(json_解析的['messages'][var1]['from'])==“+PhoneNumber”:
打印“发件人:”+“”+json_解析的['messages'][var1]['From']
打印“到::”+“”+json_解析的['messages'][var1]['To']
打印“\n”
vartotal=var1+1
打印变量总数
var=var1+1
这是您的代码,但编写正确:
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条消息:(“”)我不知道Twilio API如何工作,但它可能具有此设置的最大值,您无法获取那么多。如果这是真的,它们将具有某种分页设置,允许您获取下一条X消息,可能是通过指定消息的起始位置和所需的数量。Twilio REST API限制您可以返回的记录量。您需要使用分页。关键变量是,但它只涉及将
页面
参数添加到URL
这样你就可以得到1000页。如果返回了1000,请处理并请求下一页。如果返回的值小于1000,则中断循环
您还可以查找JSON中返回的
nextpageuri
。如果有,请遵循它。页面参数已弃用(如果尚未删除),因此您应该绝对查找。我可以在JSON对象末尾看到nextpageuri,它与原始URI类似。虽然分页是去润滑,我没有找到多少关于如何调用下一页。nextpageuri的处理方式必须与原始URI不同,调用方式也必须不同。我现在正在做这件事。还有一件事现在我已经做了,下一个页面uri中有一个页面标记。下一个页面uri将与原始页面uri相同,uri中添加了&PageToken=TokenNumber,要获取此页面令牌,您需要从原始请求的json返回底部获取下一个页面uri(nextpage=json_parsed['next_page_uri']),然后重新提交。谢谢你的帮助,谢谢你。
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