别再被营销号骗流量了。关于瑞幸,你可能真的没看懂

友情提示:

技术流文章,文科生请绕道,以免烧脑。

隔几天就能看到瑞幸烧钱、亏损,活不长的消息满屏飞。

既然有免费赠送体验券,那咱肯定要去试一试对不对。万一哪天就不送了呢。
说干就干,抓取手机、搜下瑞幸的微信小程序,输入下手机号码就注册好了,挺便捷的。完成后就收到一堆优惠券了。

有券任性,开始买买买:
第一杯,焦糖玛奇朵半糖,不知道是糖太少还是奶盖太少,又苦又涩,说实话真不懂,跟以往其他奶茶店喝的焦糖玛奇朵比起来是完全不同,我都怀疑喝的是假咖啡;
第二杯,百香芒果瑞纳冰;第三杯,抹茶拿铁;第四杯,NFC鲜榨蓝莓草莓混合果汁,感觉都还也不错啊,原谅我读书少刚开始不知道NFC代表啥,难道是像手机那样的刷公交卡。几个人买几瓶可以在那滴滴滴互动?淘宝上搜了下,才发现是学名是“非浓缩还原汁”,绕这么大一圈。公司里很多小姐姐超喜欢这款,预计会火。然后接着第五、六、七杯都还不错,没网上看到说的那么不堪。

为了证明这个结论,上爬虫到微博抓取些评论来做下情感评论分析,对于瑞幸的评论好不好,让大众评价说话。

1、爬虫抓取微博关键词"瑞幸"评论

循环翻页爬取关于瑞幸的所有评论内容。结果存入excel,待查看评价内容,读取后做情感评价分析。

#微博爬虫:https://s.weibo.com/,按“瑞幸”搜索
from selenium import webdriver
from lxml import etree
import time,datetime,xlwt,xlrd,os,re
from xlutils.copy import copy
from urllib import parse
                
def parse_time(time_str):
    if '分钟前' in time_str:
        time_temp = int(time_str.split('分钟前')[0])
        new_time = (datetime.datetime.now() + datetime.timedelta(minutes=time_temp)).strftime("%Y-%m-%d %H:%M")
    elif '今天' in time_str:
        time_temp = time_str.split('今天')[1]
        new_time = (datetime.datetime.now()).strftime("%Y-%m-%d") + ' ' +time_temp
    elif '月' in time_str and '日' in time_str:
        time_temp = time_str.replace('月','-').replace('日','-')
        new_time = (datetime.datetime.now()).strftime("%Y") + '-' +time_temp
    else:
        new_time=''
    return new_time

# 创建excel表
def create_wookbook(sheetheader):
    workbook = xlwt.Workbook()
    worksheet = workbook.add_sheet('weibo')
    # 写入表头
    for h in range(0, len(sheetheader)):
        worksheet.write(0, h, sheetheader[h])
    workbook.save('weibo.xls')

# 写入数据  
def write_into_workbook(rows, content_info_list):
    oldWb = xlrd.open_workbook('weibo.xls')  # 先打开已存在的表
    newWb = copy(oldWb)  # 复制
    newWs = newWb.get_sheet(0)  # 取sheet表
    for ex in content_info_list:
        for col in range(0, len(ex)):
            newWs.write(rows, col, ex[col])
        rows += 1
    newWb.save('weibo.xls')
    return rows

def weibo(key_word,user_name,user_key,pages):
    dict_weibo ={'q':key_word,'wvr':'6','b':'1','Refer':'SWeibo_box'}

    print('采集关键词:{},采集页数:{}'.format(key_word,pages))
    start_url = 'https://s.weibo.com/weibo?'+parse.urlencode(dict_weibo)
    sheetheader = ['编号', '用户名', '用户链接', '会员类型', '评论内容', '评论时间', '来自','转发','评论','点赞']
    if not os.path.exists('weibo.xls'):
        create_wookbook(sheetheader)
    rows =1
    driver = webdriver.Chrome()
    driver.get('https://s.weibo.com/')
    time.sleep(2)
    html = etree.HTML(driver.page_source)
    if html.xpath('//*[@id="weibo_top_public"]/div/div/div[3]/div[2]/ul/li[3]/a'):
        driver.find_element_by_xpath('//*[@id="weibo_top_public"]/div/div/div[3]/div[2]/ul/li[3]/a').click()

    time.sleep(2)
    input_user = driver.find_element_by_xpath('.//input[@action-data="text=邮箱/会员帐号/手机号"]')
    time.sleep(2)
    input_user.clear()
    input_user.send_keys(user_name)#输入账号
    time.sleep(2)
    input_key = driver.find_element_by_xpath('.//input[@type="password"]')
    input_key.clear()
    input_key.send_keys(user_key)#输入密码
    driver.find_element_by_xpath('.//span[@class="enter_psw"]/../../div[@class="item_btn"]/a').click() #点击登录
    time.sleep(2)

    for page in range(1,pages+1):
        url = (start_url+'&page={}').format(page)
        driver.get(url)  
        html = etree.HTML(driver.page_source)
        item = html.xpath('.//div[@class="card-wrap" and @action-type="feed_list_item"]')
        content_info = {}
        content_info_list = []
        for i in item:
            # content_info['page'] = page
            content_info['mid'] = "".join(i.xpath('./@mid')).strip()
            content_info['user_name'] = "".join(i.xpath('.//descendant::div[@class="content"]/div/div/a[@class="name"]/@nick-name')).strip()
            content_info['user_link'] = 'https:'+"".join(i.xpath('.//descendant::div[@class="content"]/div/div/a[@class="name"]/@href')).strip().split('?re')[0]
            content_info['user_type'] = "".join(i.xpath('.//descendant::div[@class="content"]/div/div/a[@target="_blank" and @title]/@title')).strip()
            content_info['content_txt'] = "".join(i.xpath('.//descendant::div[@class="content"]/p[@class="txt"][position()=last()]//text()')).strip()
            content_info['content_time'] = "".join(i.xpath('.//descendant::div[@class="content"]/p[@class="from"]/a[@suda-data]/text()')).strip()
            if content_info['content_time'] == '':
                content_info['content_time'] = ''
            else:
                content_info['content_time'] = parse_time(content_info['content_time'])
            content_info['phone_nofollow'] = "".join(i.xpath('.//descendant::div[@class="content"]/p[@class="from"]/a[@rel="nofollow"]/text()')).strip()
            content_info['content_zhuanfa'] = "".join(i.xpath('.//descendant::div[@class="card-act"]/ul/li[2]//text()')).strip().replace('转发','')
            content_info['content_pinglu'] = "".join(i.xpath('.//descendant::div[@class="card-act"]/ul/li[3]//text()')).strip().replace('评论','')
            content_info['content_dianzan'] = "".join(i.xpath('.//descendant::div[@class="card-act"]/ul/li[4]//text()')).strip().replace('赞','')
            
     
            content_info_list.append(list(content_info.values()))
        print(content_info_list)
        rows = write_into_workbook(rows, content_info_list)
        time.sleep(2)
    print('采集完成')
    driver.close()
if __name__ =='__main__':
    key_word = input('请输入采集关键词:')
    user_name = input('请输入微博用户名:')
    user_key = input('请输入微博密码:')
    pages = 50 #采集页数
    weibo(key_word,user_name,user_key,pages)

2、读取评价列表,调用百度情感评价api分析每一条评价得分

#情感评分分析
from aip import AipNlp
import csv,re
import pandas as pd
import numpy as np

""" 你的 APPID AK SK """
# 利用百度云提供的API接口实现情感分析
APP_ID = ''
API_KEY = ''
SECRET_KEY = ''
client = AipNlp(APP_ID, API_KEY, SECRET_KEY)

#清洗Unicode编码字符串https://www.jianshu.com/p/4958bcdea12a
def illegal_char(s):
    s = re.compile( \
        u"[^"
        u"\u4e00-\u9fa5"
        u"\u0041-\u005A"
        u"\u0061-\u007A"
        u"\u0030-\u0039"
        u"\u3002\uFF1F\uFF01\uFF0C\u3001\uFF1B\uFF1A\u300C\u300D\u300E\u300F\u2018\u2019\u201C\u201D\uFF08\uFF09\u3014\u3015\u3010\u3011\u2014\u2026\u2013\uFF0E\u300A\u300B\u3008\u3009"
        u"\!\@\#\$\%\^\&\*\(\)\-\=\[\]\{\}\\\|\;\'\:\"\,\.\/\<\>\?\/\*\+"
        u"]+").sub('', s)
    return s

# 对读入的数据进行情感分析,将其得到的结果解析成标准JSON格式数据,并保存在一个新的dict中
def senti_anlaly(text):
    text = illegal_char(text)
    data = client.sentimentClassify(text)
    sentiment =data['items'][0]['positive_prob']
    return sentiment

datas = pd.read_excel('weibo_luckin.xls',sheet_name='weibo',header=0,encoding = "gbk")
sentiments = []
for s in list(datas['评论内容']):
    sentiments.append(senti_anlaly(s))

3、分析情感评价得分

评价平均分、中位数:

print('情感评分平均得分:'+str(np.mean(sentiments)))
print('情感评分中位数:'+str(np.median(sentiments)))

情感评分平均得分:0.697;情感评分中位数:0.806

直方图分布:

from matplotlib import pyplot
import math
grades =[]
for s in sentiments:
    grades.append(math.ceil(s*10)/10) 
 
#绘制直方图
def drawHist(sentiments):
    #创建直方图
    #第一个参数为待绘制的定量数据,不同于定性数据,这里并没有事先进行频数统计
    #第二个参数为划分的区间个数
    x =[i/10 for i in range(1,11,1)]
    pyplot.hist(sentiments, 10)
    pyplot.xticks(x)
    pyplot.xlabel('score')
    pyplot.ylabel('Frequency')
    pyplot.title('luckin weibo sentiment score')
    pyplot.figure(figsize=(12, 12))
    pyplot.show()
drawHist(grades)

按0.1等间距划分分布,可以很明显的看到情感评分得分集中分布在0.7-1分,且0.9-1分数量还是最多的,超过300个,将近1/3(因微博只能查看前50页,只能爬1000条数据)。

累计柱形图:

from matplotlib import pyplot

#绘制累积曲线
def drawCumulativeHist(sentiments):
    #创建累积曲线
    #第一个参数为待绘制的定量数据
    #第二个参数为划分的区间个数
    #normed参数为是否无量纲化
    #histtype参数为'step',绘制阶梯状的曲线
    #cumulative参数为是否累积
    x =[i/10 for i in range(1,11,1)]
    pyplot.hist(sentiments, 10, normed=True, histtype='step', cumulative=True)
    pyplot.xticks(x)
    pyplot.xlabel('score')
    pyplot.ylabel('Frequency')
    pyplot.title('luckin weibo sentiment score')
    pyplot.show()
drawCumulativeHist(grades)

累计柱形图中:0.7分以上占了60%。



百度的这个情感倾向分析,0.5-0.7有一些误判的,明明是负向的,评到了0.6-0.7几。但是0.8以上基本误判的就比较少了,加上有些高分误判到低分的。相互抵消下,这个情感倾向评分结果是很有具有说服力的。

直观的数据结果,会出乎大多数人意外。瑞幸,其实比你想象中的要好。

网上关于瑞幸的负面评价,大多数是有失公允的。如果再去看下负面评价的来源,大多是营销号在带节奏。
把瑞幸类比ofo的,其实也是站不住脚的,ofo没骑两三次就坏了,大量的亏损至破产来源小黄车的损坏。而瑞幸店面会坏吗?还是瑞幸服务员会坏?
瑞幸更像的是滴滴模式,亏损来源于前期获取用户的补贴,0元免费送一杯、2.8折一杯、以及一堆5折券、去年的买一送二、买五送五等活动。
http://dy.163.com/v2/article/detail/EDELPID30511WT04.html
看下刚公布的几个数据


(连星巴克的股东都跑来投资瑞幸了)

瑞幸到2019Q1累计亏损21.7亿,用户数1687万。实际上亏损来源于新客补贴、大量买一送二、累计抽红包等活动。等新用户数增长到一定数量,新客变老客,瑞幸自然也不需要再花那么大的价钱获取新客了。
今年新客成本降到16.9元,这个数字很值得推敲,因为今年注册新用户的优惠券是:0元免费送、2.8折、以及一堆5折券。会让瑞幸亏损的最多的是0元免费送一杯、2.8折一杯送的。假设获客成本都是0元、2.8折来的,平均一杯亏:16.9/(1+(1-0.28))=9.8元,就是说一杯成本才10元左右(如果5折里还有获客成本,那单杯成本就是16.9/(1+(1-0.28)+n0+n1+……),成本还要更低)。瑞幸咖啡、饮料售价在24-27,即使按5折售卖,也大概就能盈亏平衡了。
http://www.luckinjm.com/news/22.html(瑞幸官网上自己公布的数据,算完才找到的-_-|||,扣掉租金、设备折旧、人工(北京比较贵)、水电,跟上面算出的9.8接近。)

瑞幸现在app、小程序上的是优惠是什么?充二送一、66折,实际上按这个折扣力度已经能让瑞幸盈利。如果不再需要为了大量获取新客补贴,盈利还会远吗?那些说瑞幸是下一个ofo的可以歇歇了。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,236评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,867评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,715评论 0 340
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,899评论 1 278
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,895评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,733评论 1 283
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,085评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,722评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,025评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,696评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,816评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,447评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,057评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,009评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,254评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,204评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,561评论 2 343

推荐阅读更多精彩内容

  • Markdown的几种编辑器MWebUlyssesMacDownMou 标题设置(让字体变大,和word的标题意思...
    离线0_0留言阅读 487评论 0 2
  • 多久以来,只盼望一个关于你的电话。 09年分手后,再无联系,不知道你过的如何,反正我过得很糟糕,正应了那句话:只有...
    笑多了会变态阅读 200评论 0 0