python调用接口并统计出测试结果_Python 调用百度统计&移动统计API

进入百度统计,点击管理 > 其他设置 > 数据导出服务,勾选协议并点击立即开通即可获取 Token

官方操作指南:https://tongji.baidu.com/open/api/more?p=tongjiapi_guide.tpl

在线调试工具:

获取站点列表

官方文档:https://tongji.baidu.com/open/api/more?p=tongjiapi_getSiteList.tpl

示例代码

import requests

import json

USERNAME = '用户名'

PASSWORD = '密码'

TOKEN = '所获取到的 Token'

siteListUrl = "https://api.baidu.com/json/tongji/v1/ReportService/getSiteList"

data = {

"header": {

"username": USERNAME,

"password": PASSWORD,

"token": TOKEN,

"account_type": 1

}

}

data = json.dumps(data)

r = requests.post(siteListUrl,data=data)

# 打印返回信息

print(r.text)

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

importrequests

importjson

USERNAME='用户名'

PASSWORD='密码'

TOKEN='所获取到的 Token'

siteListUrl="https://api.baidu.com/json/tongji/v1/ReportService/getSiteList"

data={

"header":{

"username":USERNAME,

"password":PASSWORD,

"token":TOKEN,

"account_type":1

}

}

data=json.dumps(data)

r=requests.post(siteListUrl,data=data)

# 打印返回信息

print(r.text)

站点报告数据

官方文档:https://tongji.baidu.com/open/api/more?p=tongjiapi_getData.tpl

示例代码

getDataUrl = "https://api.baidu.com/json/tongji/v1/ReportService/getData"

# 请求数据如下

data = {

"header": {

'username': USERNAME,

'password': PASSWORD,

'token': TOKEN,

"account_type": 1

},

"body": {

'site_id': ALAN_SITE_ID, # 前面所打印的 site_id

'method': 'overview/getTimeTrendRpt', # 报告(参见官方文档获取更多)

'start_date': '20190601', # 开始时间

'end_date': '20190615', # 结束时间

'metrics': 'pv_count,visitor_count,ip_count,bounce_ratio,avg_visit_time,' # 获取的参数

}

}

r = requests.post(getDataUrl,data=json.dumps(data))

result = json.loads(r.text)

#打印数据

print(result)

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

getDataUrl="https://api.baidu.com/json/tongji/v1/ReportService/getData"

# 请求数据如下

data={

"header":{

'username':USERNAME,

'password':PASSWORD,

'token':TOKEN,

"account_type":1

},

"body":{

'site_id':ALAN_SITE_ID,# 前面所打印的 site_id

'method':'overview/getTimeTrendRpt',# 报告(参见官方文档获取更多)

'start_date':'20190601',# 开始时间

'end_date':'20190615',# 结束时间

'metrics':'pv_count,visitor_count,ip_count,bounce_ratio,avg_visit_time,'# 获取的参数

}

}

r=requests.post(getDataUrl,data=json.dumps(data))

result=json.loads(r.text)

#打印数据

print(result)

百度移动统计

官方文档:https://mtj.baidu.com/static/userguide/book/api/overview.html

1、注册一个百度开发者账号并创建应用(工程)并绑定邮箱:http://developer.baidu.com/console#app/project,填写的回调地址如 https://www.baidu.com必须与后面步骤中调用的相同,就当前应用而言并不要求有特别的处理 URL,仅用于授权后的跳转;记录API Key和Secret Key:

2、进入百度移动统计后台并给对应邮箱授权

3、获取 Code:访问http://openapi.baidu.com/oauth/2.0/authorize?response_type=code&client_id={CLIENT_ID}&redirect_uri={REDIRECT_URI}&scope=basic&display=popup

CLIENT_ID:API Key和REDIRECT_URI:回调地址参见第1步

4、获取 access_token和refresh_token:访问:http://openapi.baidu.com/oauth/2.0/token?grant_type=authorization_code&code={CODE}&client_id={CLIENT_ID}&client_secret={CLIENT_SECRET}&redirect_uri={REDIRECT_URI}

CODE 见第3步,CLIENT_ID:API Key、CLIENT_SECRET:Secret Key和REDIRECT_URI:回调地址见第1步

测试地址:https://openapi.baidu.com/rest/2.0/mtj/svc/config/getAppList?access_token={ACCESS_TOKEN}(access_token来自第4步)

通过以上地址可获取到账号中所存在的 APP 及 AppKey(AppKey 也可通过设置>应用信息查看)

5、更新 Token:http://openapi.baidu.com/oauth/2.0/token?grant_type=refresh_token&refresh_token={REFRESH_TOKEN}&client_id={CLIENT_ID}&client_secret={CLIENT_SECRET}

REFRESH_TOKEN来自第4步,API Key、CLIENT_SECRET:Secret Key见第1步

6、查看配额及已调用次数

7、调用相应接口:https://openapi.baidu.com/rest/2.0/mtj/svc/app/getDataByKey?access_token=[ACCESS_TOKEN]&key=[APPKEY]&method=newuser/a&start-date=20171107000000&end-date=20171108232359&metrics=new_user_count,user_count

APPKEY为第4步示例中所获取或通过百度移动统计后台设置>应用信息查看

示例代码(其中 access_token 是有有效期的且接口调用存在次数限制,可考虑存放到数据库中,就接口层面而言,此处使用 get 和 post 方法均可获取数据):

import requests, json

CLIENT_ID = ""

CLIENT_SECRET = ""

REFRESH_TOKEN = ""

ANDROID_APPKEY = ""

IOS_APPKEY = ""

access_token = ""

REFRESH_TOKEN_URL = "http://openapi.baidu.com/oauth/2.0/token?grant_type=refresh_token&refresh_token={REFRESH_TOKEN}&client_id={CLIENT_ID}&client_secret={CLIENT_SECRET}"

USER_DATA_URL = "https://openapi.baidu.com/rest/2.0/mtj/svc/app/getDataByKey?access_token={ACCESS_TOKEN}&key={APP_KEY}&method=newuser/a&start-date={STARTDATE}000000&end-date={ENDDATE}232359&metrics=new_user_count,new_user_ratio,old_user_count,old_user_ratio,user_count,session_count,average_session_time,session_time_per_person"

def refresh_token():

r = requests.get(REFRESH_TOKEN_URL.format(REFRESH_TOKEN=REFRESH_TOKEN,CLIENT_ID=CLIENT_ID,CLIENT_SECRET=CLIENT_SECRET))

result = r.json()

access_token = result['access_token']

return access_token

def get_user_data(start_date, end_date, app_type='ios'):

if app_type == 'android':

APP_KEY = ANDROID_APPKEY

else:

APP_KEY = IOS_APPKEY

r = requests.post(USER_DATA_URL.format(ACCESS_TOKEN=access_token,APP_KEY=APP_KEY,STARTDATE=start_date, ENDDATE=end_date))

result = r.json()

print(result)

if 'error_code' not in result:

return result

elif result['error_code']==111:

refresh_token()

get_user_data(start_date, end_date, app_type)

else:

return

if __name__ == '__main__':

start_date = '20190712'

end_date = '20190713'

app_type = 'ios'

get_user_data(start_date, end_date, app_type)

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

importrequests,json

CLIENT_ID=""

CLIENT_SECRET=""

REFRESH_TOKEN=""

ANDROID_APPKEY=""

IOS_APPKEY=""

access_token=""

REFRESH_TOKEN_URL="http://openapi.baidu.com/oauth/2.0/token?grant_type=refresh_token&refresh_token={REFRESH_TOKEN}&client_id={CLIENT_ID}&client_secret={CLIENT_SECRET}"

USER_DATA_URL="https://openapi.baidu.com/rest/2.0/mtj/svc/app/getDataByKey?access_token={ACCESS_TOKEN}&key={APP_KEY}&method=newuser/a&start-date={STARTDATE}000000&end-date={ENDDATE}232359&metrics=new_user_count,new_user_ratio,old_user_count,old_user_ratio,user_count,session_count,average_session_time,session_time_per_person"

defrefresh_token():

r=requests.get(REFRESH_TOKEN_URL.format(REFRESH_TOKEN=REFRESH_TOKEN,CLIENT_ID=CLIENT_ID,CLIENT_SECRET=CLIENT_SECRET))

result=r.json()

access_token=result['access_token']

returnaccess_token

defget_user_data(start_date,end_date,app_type='ios'):

ifapp_type=='android':

APP_KEY=ANDROID_APPKEY

else:

APP_KEY=IOS_APPKEY

r=requests.post(USER_DATA_URL.format(ACCESS_TOKEN=access_token,APP_KEY=APP_KEY,STARTDATE=start_date,ENDDATE=end_date))

result=r.json()

print(result)

if'error_code'notinresult:

returnresult

elifresult['error_code']==111:

refresh_token()

get_user_data(start_date,end_date,app_type)

else:

return

if__name__=='__main__':

start_date='20190712'

end_date='20190713'

app_type='ios'

get_user_data(start_date,end_date,app_type)

你可能感兴趣的:(python调用接口并统计出测试结果_Python 调用百度统计&移动统计API)