如何使用Python从Twilio获取1000多条消息记录

2024-05-19 23:02:27 发布

您现在位置:Python中文网/ 问答频道 /正文

我的消息对象有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

Tags: 代码fromimportjsonvar记录电话号码parsed
2条回答

Twilio restapi限制了可以返回的记录量。你需要使用分页。关键变量是in the Twilio Paging documentation,但它只涉及向URL添加一个Page参数。在

所以你会得到1000页。如果只返回1000个,则处理并请求下一页。如果返回的值小于1000,则跳出循环。在

您还可以查找JSON中返回的nextpageuri。如果有,就跟着它。在

这是您的代码,但写得很好:

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条消息:('https://api.twilio.com/2010-04-01/Accounts/AccountSID/Messages.json?DateSent=2017-09-28&From=PhoneNumber&PageSize=10000')TwilioAPI是如何工作的我不知道,但它可能有一个最大值的设置,您无法获取那么多。如果这是真的,他们将有某种类型的页面设置,允许您获得下一个X消息,可能是通过指定消息的起始位置和所需的amount。在

相关问题 更多 >