Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/apache-kafka/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用Python从Twilio获取1000多条消息记录_Python_Json_Twilio - Fatal编程技术网

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

如何使用Python从Twilio获取1000多条消息记录,python,json,twilio,Python,Json,Twilio,我的消息对象有1000多条记录 在我的代码中,我循环浏览并从特定的“发件人”电话号码中挑选记录。我把记录拿回来,然后显示发信人和接收人的电话号码以及一个索引号码,以便更容易地计算返回的记录数 我知道有1000多张唱片,但它停在1000张。我怎样才能得到更多的唱片 我一直在与Twilio支持部门合作,他们派我来这里询问,因为他们不精通Python 以下是我现在拥有的代码(当然,我已经删除了敏感帐户信息): 导入请求 导入json r=请求。获取('https://api.twilio.com/20

我的消息对象有1000多条记录

在我的代码中,我循环浏览并从特定的“发件人”电话号码中挑选记录。我把记录拿回来,然后显示发信人和接收人的电话号码以及一个索引号码,以便更容易地计算返回的记录数

我知道有1000多张唱片,但它停在1000张。我怎样才能得到更多的唱片

我一直在与Twilio支持部门合作,他们派我来这里询问,因为他们不精通Python

以下是我现在拥有的代码(当然,我已经删除了敏感帐户信息):

导入请求
导入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