【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

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