从环信请求的批量用户信息,分页在返回结果cursor里面,且不固定。返回结果集是json字符串,利用列表追加或者扩展的属性进行全局变量赋值,然后写入excel统计查看。
代码如下:
# -*- coding: utf-8 -*-
import requests
import json
import pandas as pd
"""
查看环信注册用户数据
"""
headers = {
'Content-Type': 'application/json',
"User-Agent": "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.146 Safari/537.36"
}
ulistextend = []
ulistappend = []
def getToken():
url = "https://a1-vip5.easemob.com/test/test/token"
dictdata = '''{
"grant_type":"test",
"client_id":"test",
"client_secret":"test"
}'''
res = requests.post(url, headers=headers, data=dictdata)
token = res.content.decode("utf-8")
token = json.loads(token)
return token['access_token']
def getUsers(token, cursor=''):
limit = 600
headers['Authorization'] = 'Bearer '+token
url = 'https://a1-vip5.easemob.com/test/test/users?limit='+str(limit)+'&cursor='+cursor
res = requests.get(url, headers=headers)
res = res.content.decode("utf-8")
res = json.loads(res)
if res['count'] < int(limit):
cursors = None
print(cursors)
ulistappend.append(res['entities'])# 整体追加
ulistextend.extend(res['entities']) # 扩展原来的list,分开追加
return ulistappend, ulistextend
else:
cursors = res['cursor']
print(cursors)
ulistappend.append(res['entities'])
ulistextend.extend(res['entities'])# 扩展原来的list,分开追加
return getUsers(token, cursor=cursors)
def writeExcel(users, name):
df = pd.DataFrame(users)
df[['uuid', 'username', 'activated']].to_excel('hx_ulist.xlsx', sheet_name=name)
if __name__ == '__main__':
token = getToken()
ulistappend, ulistextend = getUsers(token, cursor='')
print(len(ulistappend))
print(len(ulistextend))
"""追加的一个列表包含三个列表的数据结构"""
write = pd.ExcelWriter('ulistappend.xlsx')
for i in range(len(ulistappend)):
df = pd.DataFrame(ulistappend[i])
df[['uuid', 'username', 'activated']].to_excel(excel_writer=write, sheet_name="page"+str(i+1))
write.save()
write.close()
"""扩展列表"""
df2 = pd.DataFrame(ulistextend)
df2[['uuid', 'username', 'activated']].to_excel('ulistextend.xlsx')
多个sheet:
同一个sheet: