如何使用python surveygizmo包调用surveygizmo API到特定页面?

时间:2016-10-13 12:20:33

标签: python survey

我下载了surveygizmo软件包(1.2.1)并轻松调用了这样的surveygizmo API:

<EditText
    android:inputType="numberDecimal"
    android:digits="0123456789," />

导致类似这样的事情:

import surveygizmo as sg

client = sg.SurveyGizmo(
api_version='v4',
# example
api_token = "E4F796932C2743FEBF150B421BE15EB9",
api_token_secret = "A9fGMkJ5pJF1k"
)

surveys = client.api.survey.list()
print(surveys)

如何访问以下页面?我只看到前50个结果,它们都在第一页上。

非常感谢!

5 个答案:

答案 0 :(得分:1)

通过反复试验,我找到了这个解决方案:

surveys = client.api.survey.list(resultsperpage=500, page=5)

答案 1 :(得分:0)

我没有花时间设置对SurveyGizmo的访问权限。但是,通过导入Python外观并在其中找到文档,我发现了这种可能性。

client.config.requests_kwargs={'page':2}

我很想知道它是否有效。

答案 2 :(得分:0)

一般来说,安妮建议我认为最好的方式,但我不能投票,因为新手:)

我只能补充一点,你可以将total_pages作为变量并在循环中使用它。

total_pages = json.loads(sg.api.survey.list())['total_pages']
for numbe_page in range(1,total_pages):
     survey_list = json.loads(sg.api.survey.list(resultsperpage=500, page=number_page))

还有一些补充点

1)我找到一个site with info about the parameters,帮助我找出使用sg的参数。

2)如果你想检查可用的参数,你可以查看代码:https://github.com/ITNG/SurveyGizmo/tree/master/surveygizmo/api

答案 3 :(得分:0)

每当我尝试每页提取40个或更多结果并提取特定页面时,API就会超时。那不疯狂吗?好像是效率极低的API。

survey_response = json.loads(client.api.surveyresponse.list(survey_id1, resultsperpage=30, page=1))

答案 4 :(得分:0)

对以上答案进行一些修改,以将所有答复保存在调查中,您可以执行以下操作:

client = SurveyGizmo(
    api_version='v4',

    # example token from SurveyGizmo docs
    api_token="E4F796932C2743FEBF150B421BE15EB9",
    api_token_secret="A9fGMkJ5pJF1k"

)

client.config.api_token = "your API token"
client.config.api_token_secret = "your API token secret"

survey_id = "your survey ID"

responses = client.api.surveyresponse.list(survey_id)

pages = responses['total_pages']

data = []

for page in range(1, pages):
    print('Getting page {}/{}'.format(page, pages))
    data.append(client.api.surveyresponse.list(id, page=page))

filename = 'data.json'.format(time)
with open(filename, 'w', encoding='utf-8') as f:
    json.dump(data, f, ensure_ascii=False, indent=4)