【Python 爬蟲】使用友盟API獲取數據

一、需求

每天需要從友盟網站獲取若干應用如下信息
在這裏插入圖片描述

二、實現-分解

1)獲取api祕鑰
#獲取api祕鑰
def authorize(user, pasw):
    url = 'http://api.umeng.com/authorize'
    body = {'email': '%s'%(user), 'password': '%s'%(pasw)}
    response = requests.post(url, params = body)
    return response.json()['auth_token']
auth_token=authorize('賬戶名稱','賬戶密碼')  #參數user代表友盟賬號,pasw代表友盟密碼,返回token,重要的密匙

2)獲取賬戶下所有應用的信息,取所需要應用的appkey

def apps(auth_token):
    url='http://api.umeng.com/apps?&auth_token=%s'%(auth_token)
    response=requests.get(url)
    return response.json()
apps(auth_token)

在這裏插入圖片描述

3)獲取特定應用特定日期的基礎數據(活躍用戶、累計用戶、啓動次數、新增用戶)

appkey='XXXXXXXXXXXXXXXXXXXX'
def app_data(appkey,date,auth_token):
    url='http://api.umeng.com/base_data?appkey=%s&date=%s&auth_token=%s'%(appkey,date,auth_token)
    response=requests.get(url)
    return response.json()
app_data(appkey,'2019-12-04',auth_token)

在這裏插入圖片描述

4)獲取留存率

#獲取留存率
def app_data(appkey,start_date,end_date,auth_token):
    url='http://api.umeng.com/retentions?appkey=%s&start_date=%s&end_date=%s&period_type=daily&auth_token=%s'%(appkey,start_date,end_date,auth_token)
    response=requests.get(url)
    #最近一天的留存率數據沒有會報錯
    try:
        return response.json()[0]['retention_rate'][0]
    except IndexError:
        return ''

app_data(appkey,'2019-12-03','2019-12-03',auth_token)

在這裏插入圖片描述

5)獲取使用時長

#獲取使用時長
def app_data(appkey,start_date,end_date,auth_token):
	#period_type=daily_per_launch單次使用時長
    url='http://api.umeng.com/durations?appkey=%s&start_date=%s&end_date=%s&period_type=daily_per_launch&auth_token=%s'%(appkey,start_date,end_date,auth_token)
    response=requests.get(url)
    return response.json()['average']
app_data(appkey,'2019-12-04','2019-12-04',auth_token)

在這裏插入圖片描述

三、整合

import requests
import pandas as pd
import datetime
auth_token='xxxxxxxxxxxxx'
appkey_ios='yyyyyyyyyyyy'
appkey_andriod='zzzzzzzzzzzz'

def all_data(appkey,date,auth_token):
    url_base='http://api.umeng.com/base_data?appkey=%s&date=%s&auth_token=%s'%(appkey,date,auth_token)
    response_base=requests.get(url_base)
    
    url_duration='http://api.umeng.com/durations?appkey=%s&start_date=%s&end_date=%s&period_type=daily_per_launch&auth_token=%s'%(appkey,date,date,auth_token)
    response_duration=requests.get(url_duration)
    
    url_retentions='http://api.umeng.com/retentions?appkey=%s&start_date=%s&end_date=%s&period_type=daily&auth_token=%s'%(appkey,date,date,auth_token)
    respons_retentions=requests.get(url_retentions)

    try :
        retentions=str(respons_retentions.json()[0]['retention_rate'][0])+'%'
    except IndexError:
        retentions=''    
    
    
    return str(response_base.json()['new_users'])+'\t'+\
            str(response_base.json()['installations'])+'\t'+''+'\t'+\
            str(response_base.json()['active_users'])+'\t'+\
            str(response_base.json()['launches'])+'\t'+\
            retentions+'\t'+\
            response_duration.json()['average']+'\t'

#寫入txt文檔,循環寫入前4天的數據
f=open(r'G:\temp files\youmeng.txt','w')
for i in range(4,0,-1):
    date=(datetime.date.today()-datetime.timedelta(days=i)).strftime('%Y-%m-%d')
    content=date+'\t'+all_data(appkey_ios,date,auth_token)+all_data(appkey_andriod,date,auth_token)+'\n'
    f.write(content)
f.close()

參考資料:友盟OpenAPI.pdf

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章