前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >爬了IOS系统上各APP的排行,发现拼夕夕是真厉害!

爬了IOS系统上各APP的排行,发现拼夕夕是真厉害!

作者头像
周萝卜
发布2021-03-16 10:32:08
6770
发布2021-03-16 10:32:08
举报
文章被收录于专栏:萝卜大杂烩萝卜大杂烩

最近可以开始申报个人所得税了,就发现各大 App store 上的个人所得税APP的下载量都直线上升,真的是需求驱动市场呀!

今天我们就来分析下过去90天里,IOS系统中各种APP的排行情况

数据获取

老规矩,我们先来看看怎么获取数据。 我这里使用的是如下的网站进行数据获取,数据还是比较全的,而且也没有什么反爬机制,获取数据还是比较简单的

https://sensortower-china.com/ios/rankings/top/iphone/china/all-categories?locale=zh-CN&date=2020-12-09

数据分成两部分,一个是APP的排行,还有就是某个APP的评论情况

首先是排行爬取 因为是根据日期来构造url的,所以先写一个获取日期的函数

代码语言:javascript
复制
import requests
import pandas as pd

def get_date_list(begin_date,end_date):
    date_list = [x.strftime('%Y-%m-%d') for x in list(pd.date_range(start=begin_date, end=end_date))]

    return date_list

然后再写一个存储数据的函数,都是基本操作了呀

代码语言:javascript
复制
def save_to_csv(data, date):
    with open('ios.csv', 'a+') as f:
        f.write('name|rating|price|rating_count|publisher_country|rank|date\n')
        for i in data:
            f.write('{}|{}|{}|{}|{}|{}|{}\n'.format(i[0]['name'], i[0]['rating'], i[0]['price'], i[0]['rating_count'], i[0]['publisher_country'], i[0]['rank'], date))

接下来再封装网络请求的函数,直接使用requests就可以

代码语言:javascript
复制
def get_data(date):
    url = 'https://sensortower-china.com/api/ios/rankings/get_category_rankings?category=0&country=CN&date=%s&device=IPHONE&limit=100&offset=0' % date
    res = requests.get(url)
    return res.json()

完成以上三个函数之后,就可以愉快的获取数据了

代码语言:javascript
复制
date_list = get_date_list('2020-12-09', '2021-03-07')
for date in date_list:
    data = get_data(date)
    save_to_csv(data, date)

下面就是获取评论的代码,也很简单

代码语言:javascript
复制
def get_reviews(page):
    pingduoduo_reviews = 'https://sensortower-china.com/api/ios/review/get_reviews?app_id=1044283059&page={}&limit=25&sort_by=date&sort_order=desc&start_date=2020-12-08T00%3A00%3A00.000Z&end_date=2021-03-07T00%3A00%3A00.000Z&rating='.format(page)
    p_reviews = requests.get(pingduoduo_reviews)
    print(p_reviews)
    return p_reviews.json()

for p in range(1, 603):
    print(p)
    reviews = get_reviews(p)
    for i in reviews['feedback']:
        with open('pingxixi.csv', 'a+') as f:
            f.write(i['content'])

至此,数据获取完毕!

数据分析

我们先来看看获取到的数据情况

代码语言:javascript
复制
df = pd.read_csv('ios.csv', sep='|')
df.drop_duplicates(inplace=True)

去重之后,还有不到9K条数据

排行数据

先来看看占据第一的APP数据

代码语言:javascript
复制
rank_1 = df[df['rank'] == '1']
result = rank_1['name'].value_counts().sort_values()
x_data = result.index.tolist()
y_data = result.values.tolist()

b = (Bar()
     .add_xaxis(x_data)
     .add_yaxis('',y_data)
     .set_global_opts(title_opts = opts.TitleOpts(title='排行第一数据'))
     .set_series_opts(label_opts=opts.LabelOpts(is_show=True,position='right'))
     .reversal_axis()
)
grid = Grid(init_opts=opts.InitOpts(theme=ThemeType.VINTAGE))
grid.add(b, grid_opts=opts.GridOpts(pos_left="20%"))
grid.render_notebook()

可以看出微信还是老大啊,有16次占据了榜单第一的位置,接下来就是拼夕夕和使命召唤,话说使命召唤的端游还是玩过的,手游就没有尝试了

再来看看占据榜单第二的数据呢

在这份榜单中微信还是以31次处于首位,看了微信不是第一就是行走在处于第一的路上啊

榜单第三的数据

处于第三最多的是抖音,这也正常,毕竟现在罹患“抖癌”的人是越来越多了

排行变化

下面我们选取榜单第一上的前五种APP来看下它们的排行变化情况 微信排行变化

代码语言:javascript
复制
weixin = df[df['name'] == '微信']
y_data = weixin['rank'].values.tolist()
x_data = weixin['date'].values.tolist()
b = (Line()
     .add_xaxis(x_data)
     .add_yaxis('',y_data)
     .set_global_opts(title_opts = opts.TitleOpts(title='微信排行变化'))
     .set_series_opts(label_opts=opts.LabelOpts(is_show=True,position='right'))
)
grid = Grid(init_opts=opts.InitOpts(theme=ThemeType.VINTAGE))
grid.add(b, grid_opts=opts.GridOpts(pos_left="20%"))
grid.render_notebook()

可以看到微信大佬在过去90天的表现还是非常强劲的,大多数情况都是出于前五名的存在,虽然也有过13名的表现,但是那都不是事儿啊!

拼夕夕排行变化

看到拼夕夕的排行就不是太稳定了,已经口碑和套路,都是不一般的存在呢

使命召唤手游排行变化

这款手游还是一路高歌的,表现相当的给力了!

抖音排行变化

再来看抖音这款APP,波动还是很大的,话说2021年一月份这个排行,难道是假期春节,大家都窝在家里刷短视频了吗

个人所得税排行

这款软件就不说了,哈哈哈,现在正是报税的时候,你需要补缴吗

软件口碑

下面我们来看看各个APP的口碑吧 我们先来看看软件评分最高的几个都是哪些

代码语言:javascript
复制
df_ranting_sort = df_ranting.sort_values(by='rating', ascending=False)
x_data = df_ranting_sort['name'][1:11].values.tolist()
y_data = df_ranting_sort['rating'][1:11].values.tolist()

b = (Bar()
     .add_xaxis(x_data)
     .add_yaxis('',y_data)
     .set_global_opts(title_opts = opts.TitleOpts(title='Star(口碑) 排行'), xaxis_opts=opts.AxisOpts(min_=4.9))
     .set_series_opts(label_opts=opts.LabelOpts(is_show=True,position='right'))
     .reversal_axis()
)
grid = Grid(init_opts=opts.InitOpts(theme=ThemeType.VINTAGE))
grid.add(b, grid_opts=opts.GridOpts(pos_left="20%"))
grid.render_notebook()

评分前十名

可以看到,在榜单中的前几名,都不是评分最高的,怎么说呢,众口难调吧 再来看看前20的

最后我们再来看看软件的评论情况吧,我这里只抓取了拼夕夕的数据 拼夕夕词云

代码语言:javascript
复制
import jieba

ping_reviews = pd.read_csv('pingxixi.csv', sep='|', names=['reviews'], encoding='utf-8')
count_list = []
for i in ping_reviews['reviews'].values.tolist():
    result = jieba.lcut(i)
    for x in result:
        count_list.append(x)
ping_counts = {}
stopword = [' ', '的', ',', '了', '。', '我', '都', '是', '!', '不', '给', '人', '也', '就', '你', '还', '?', '说',
           '就是', '在', '让', '有', '买', '一个', '到', '多', '又', '这', '要', '这个', '吧', '个', '没', '用', '']
for w in count_list:
    if w not in stopword:
        ping_counts[w] = ping_counts.get(w, 0) + 1
sort_counts = sorted(ping_counts.items(), key=lambda item: item[1], reverse=True)

def wordcloud_base(words) -> WordCloud:

    c = (
        WordCloud(init_opts=opts.InitOpts(theme=ThemeType.VINTAGE))
        .add("", words, word_size_range=[20, 100], shape="star")
        .set_global_opts(title_opts=opts.TitleOpts(title=""))
    )
    return c

wordcloud_base(zip([x[0] for x in sort_counts[:100]], [x[1] for x in sort_counts[:100]])).render_notebook()

话说既然这么不待机拼夕夕,为啥要下载,又为啥这么多人在拼呢

后台回复“app”获取完整代码哦

好了,今天的分享就到这里了,给个“在看”再走吧!

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-03-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 萝卜大杂烩 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 数据获取
  • 数据分析
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档