根据国家规定,2019年11月底前在全国实施“携号转网”,上海自然也不会例外。对于上海三大运营商来说,“携号转网”既是一个挑战,也是一个机遇,能否抓住对于接下去3年的发展至关重要。在上海本土居民中,三大运营商的市场口碑到底如何,也将是影响“携号转网”结果的一个重要参考指标。本文通过爬虫技术,对本地部分网民对上海三大运营商的帖子主题进行收集并分析,给大家呈现一个最直观的结果。

一、目标寻找
本次爬取的网站是上海本地论坛:宽带山(https://club.kdslife.com/f_15.html)。
此论坛主要以上海本地男性网民为主,在本地有一定的影响力,能够反映出上海部分本地居民对三大运营商的感知。另外由于网站限制,对于部分帖子需要收藏后才能打开,所以本次爬取字段包括主题、人气(查看度)、发布人、发布时间,并考虑到时间因素,只爬取2018年1月1日之后的帖子。

二、数据爬取

因为仅需要爬取搜索记录,所以不涉及到反爬技巧

import requests
from bs4 import BeautifulSoup
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
from wordcloud import WordCloud
import jiebaheaders = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36','Host': 'club.kdslife.com'
}'''第一步:爬取有关三大运营商在本地论坛KDS里近一年的帖子标题'''
def export_Info(yys, content):'''导出有关运营商的帖子信息'''with open(yys + '.txt', 'a', encoding='utf-8') as file:file.write(content + '\n')def spider_yys():'''爬取三大运营商在本地论坛KDS里的帖子信息'''for y in yys:for j in range(40):url = r"https://club.kdslife.com/index.php?c=forum/search&m=main&fid=0&s_word=" + y + "&type=1&sort=post_time&page=" + str(j)r = requests.get(url=url, headers=headers)soup = BeautifulSoup(r.text, 'lxml')content = soup.find_all(name='li', attrs={'class': 'i2'})try:if str(content[0].find(name='span', attrs={'class': 'n6'}).string).startswith('17'): breakexcept:breakfor i in range(len(content)):theme = content[i].find(name='a')['title'] #标题if '移动硬盘' in theme: continueif '移动支付' in theme: continueif '电信诈骗' in theme: continuepopularity = content[i].find(name='span', attrs={'class': 'n2'}).string #人气presenters = content[i].find(name='a', attrs={'target': '_blank'}).string #发表人present_time = content[i].find(name='span', attrs={'class': 'n6'}).string #发布时间try:if str(present_time).startswith('17'): breaknew_content = theme + '\t' + popularity + '\t' + presenters + '\t' + present_time + '\t'print(new_content)export_Info(y, new_content)except:continueyys = ['电信', '移动', '联通']
spider_yys()

爬下来的结果如图:

三、数据整理与分析
通过pandas对数据进行剔除重复项、空值等操作,并做描述性统计:

def popularity_format(popularity):'''把点击量标准化,如1.1w改成11000'''if 'w' in str(popularity):pop_format = int(float(str(popularity).replace('w', '')) * 10000)return pop_formatyys = ['电信', '移动', '联通']
for y in yys:yys_file = y + '.txt'dx_news = pd.read_csv(yys_file, sep='\t', encoding='utf-8', engine='python', skipinitialspace=True,usecols=[0, 1, 2, 3], names=['theme', 'popularity', 'presenters', 'present_time'], skiprows=1)dx_news.dropna(axis=0, inplace=True)dx_news.drop_duplicates(inplace=True)print('以下是{}帖子的相关数据:'.format(y))print('{}的主题数:{}'.format(y, dx_news.shape[0]))  # 主题数dx_news['popularity'] = dx_news['popularity'].astype(str).apply(popularity_format)popularity_sum = dx_news['popularity'].sum()print('{}的帖子热度和:{}'.format(y, popularity_sum))  # 帖子的关注度总和popularity_count = dx_news[['theme', 'popularity']].sort_values(by='popularity', ascending=False).head(3)print('{}点击量最大的3个帖子:\n {}'.format(y, popularity_count))  # 点击量最大的3个帖子presenters_count = dx_news.groupby('presenters').size().sort_values(ascending=False).head(3)print('{}发帖数量最多的3个发布者:\n {}'.format(y, presenters_count)) #发帖人发帖数量最多的3个

1、主题数比较:

上海电信和上海移动的相关发帖量比较接近,上海联通则很少,这也可以从侧面反映出来上海地区三大运营商的市场占有率如何

2、帖子热度和比较:

和主题数类似,但上海联通显得更少了

3、网友最关注的的3个帖子:

1)、上海电信前三关注的帖子,第一个是说年费的,第二个是讲光猫破解(技术控?),第三个标题很奇怪,进去一看原来是讲排线乱的问题。看来电信的宽带还是比较受大家肯定的,只是排线乱的问题的确是需要解决一下;
2)、上海移动前三帖子其实用一个字就可以讲完了:送!
送宽带、送话费、送手机、送流量,用尽一切方法来绑定客户,对于电信宽带市场来说冲击力度很大;而且排名第一的帖子热度值近80万,虽然明显是一个营销广告贴,但效果还是达到了,老百姓还是吃这一套的!
3)、上海联通就比较可怜了,排名第一的还是一个校园卡的帖子,热度还比不上电信和移动的第三名

四、词云图
为了更直观地了解情况,使用jieba进行分词,再用wordcloud进行词图展现:

def drop_stopwords(content):'''先用jieba分词,然后去除停用词'''contents_clean = []content = content.strip()word_list = jieba.lcut(content)for word in word_list:try: word = word.replace('电信', '')except: passif word in stopwords:continueif word.strip() == '': continuecontents_clean.append(word)all_words.append(word)return contents_cleanyys = ['电信', '移动', '联通']
for y in yys:stopwords = pd.read_csv('stopwords.txt', engine='python', encoding='utf-8', sep='\r\n', names=['stopword']) #停用词stopwords = stopwords.stopword.values.tolist()yys_file = y + '.txt'dx_news = pd.read_csv(yys_file, sep='\t', encoding='utf-8', engine='python', skipinitialspace=True, usecols=[0, 1, 2, 3], names=['theme', 'popularity', 'presenters', 'present_time'], skiprows=1)all_words = []dx_news['theme'] = dx_news['theme'].astype(str).apply(drop_stopwords)df_all_words = pd.DataFrame({'all_words': all_words})words_count = df_all_words.groupby(by=['all_words'])['all_words'].agg({'count': np.size})words_count = words_count.reset_index().sort_values(by=['count'], ascending=False)wordcloud = WordCloud(scale=20, font_path='simhei.ttf', background_color='white', max_words=50, max_font_size=100, random_state=20)word_frequence = {x[0]: x[1] for x in words_count.head(100).values}wordcloud = wordcloud.fit_words(word_frequence)plt.imshow(wordcloud)plt.axis("off")# plt.show()wordcloud.to_file(y + '.jpg')

1、上海电信

分析:上海电信给本地居民的主要印象还是“宽带”、“手机”、“十全十美”、“IPTV”、“到期”、“光猫”等,并没有跳出传统印象;同时对比上海移动和上海联通,“5G”的标签仅仅存在于左上一个不起眼的角落里,上海电信的“5G”宣传仍需努力。

2、上海移动

分析:上海移动的主要关键词是“流量”、“宽带”、“送”、“免费”、“手机”,看来进攻策略是相当的明显,但是正如标签里的“套路”所说,免费的产品质量如何?“网络”、“服务”如何?这才是一个产品能否持续生存的关键。

3、上海联通

分析:上海联通的主要关键词是“宽带”、“5G”、“校园卡”、“便宜”,对市场的抢占欲望不强,主要重心在于基础建设和校园发展。需要注意的是,受益于“老师我叫何同学”的一条VBlog,"5G"也变成了联通的一条显著标签,这值得我们思考:传统的营销手段是否已没落?剔除“东施效颦”般的劣质仿冒品,高质量的新型视频宣传是否已成为一条新的推广之道?

五、笔者小谈
1、本文的篇幅不长、代码不多,主要是因为刚学jieba分词和wordcloud的新技术,所以拿来练练手,只有最基础的描述性统计分析,不涉及到算法和机器学习,后续会思考如何提升;

2、正如我前文所说,携号转网既是一个挑战,也是一个机遇。市场瞬息万变,但是市民对于产品的追求就2个词:便宜+好用。但是对于三大运营商来说,国资委的考核指标是利润率,而利润率的主要指标则是收入和成本,如果一直用“送宽带、送话费、送手机、送流量”的方式,虽然短期内的确有较好的成绩,再配合内部成本压降,完成利润率等考核指标不难,也能有高发展量、高新增收入、高市场占有率等比较好的答卷。但长久之后,损失的却是企业内部的健康发展,最终受苦的仍然是广大百姓。

Python:上海三大运营商市场口碑如何?数据分析告诉你相关推荐

  1. python上海房价数据分析统计服_(干货)数据分析案例--以上海二手房为例

    如果你手上有一批数据,你可能应用统计学.挖掘算法.可视化方法等技术玩转你的数据,但你没有数据的时候,我该怎么玩呢?接下来就带着大家玩玩没有数据情况下的数据分析. 本文从如下几个目录详细讲解数据分析的流 ...

  2. Python数据分析与数据化运营(笔记)第一章:python与数据化运营

    1.开头三个问题: 1.python是什么? 2.数据化运营是什么? 3.为什么要将python用于数据化运营? 1.1 Python是什么? 老生常谈,这里简单列举一下,百度一大把,不过多赘叙 py ...

  3. python上海培训哪里比较好-上海十大python培训机构

    上海Python培训班 千锋教育打造人工智能Python工程师 快速咨询 上海十大python培训机构 很多零基础的同学选择学习Python入门.到底该怎么选择Python培训机构?应该去哪里学习Py ...

  4. 【项目实战】:基于python的p2p运营商数据信息的特征挖掘

    ######[风控建模] 基于python的p2p运营商数据信息的特征挖掘 **@author: sunyaowu** **@datetime: 2018年8月** 说明:利用平台数据和第三方数据建立 ...

  5. 直播回顾 | 数据驱动实践的三大运营场景讲解

    近日,神策数据进行了一场题为<数据驱动实践的三大运营场景讲解>的专题直播,直播中结合各行业的数据驱动企业的优质实践经验,针对三大运营场景进行了逐一详解,获得了阵阵好评,不少学员索要视频回放 ...

  6. python操作三大主流数据库(12)python操作redis的api框架redis-py简单使用

    python操作三大主流数据库(12)python操作redis的api框架redis-py简单使用 redispy安装 安装及简单使用:https://github.com/andymccurdy/ ...

  7. [转载] 利用python对csv文件进行简单的数据分析

    参考链接: Python中的探索性数据分析 利用python对csv文件进行简单的数据分析 在通过爬虫爬取数据后,将数据放到csv文件里,为了方便观察,可以对数据进行简单的分析.下面我将对爬取的51j ...

  8. python基于爬虫技术的海量电影数据分析源码,数据处理分析可视化,GUI界面展示

    基于爬虫技术的海量电影数据分析 介绍 一个基于爬虫技术的海量电影数据分析系统 系统架构 本系统主要分为四个部分,分别为后端爬虫抓取.数据处理分析可视化.GUI界面展示.启动运行,分别对应getData ...

  9. 日本独立站流量攻略大起底,捞金全球第三大电商市场!

    据 Statista 数据显示,日本已成为全球第三大电商市场,仅次于中国和美国,并且仍处于一个高增长的态势.日本国民消费能力较高,互联网的普及率高达 90% 以上,加上电商市场基础设施齐全,对各位跨境 ...

最新文章

  1. 《基于MFC的OpenGL编程》Part 1 A Primer
  2. 使用 libevent 和 libev 提高网络应用性能
  3. 日记-2017-7-24-cp-css-django/media
  4. coloros基于java_基于Android 11 ColorOS 11海外版亮点一图抢先看:9月24日国内发布
  5. Ubuntu16.04安装Python3.7及其pip3并切换为默认版本
  6. SQL中truncate table和delete的区别 --转
  7. php7 setcookie无效_php COOKIE介绍和setcookie有时会在ie下失效问题
  8. linux下nginx的基本使用
  9. 伪分布式kafka安装与验证
  10. php代码审计实战(一)
  11. C语言程序设计圆周率,如何设计C语言程序输出圆周率小数点后的1000位?请大侠出手啊。...
  12. linux+ipv6免流量下载,Ubuntu 12.04 校园网下使用IPv6源 免流量更新
  13. kru生成树变种 poj3522 bzoj 1196
  14. cv2颜色空间(2)——交互式的颜色检测
  15. ssh或scp报错:WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED
  16. 如何用示波器调试波形
  17. 跪了!美团Android开发工程师岗位职能要求,重难点整理
  18. 有关程序的50个至理名言
  19. 小程序实现瀑布流布局
  20. CU VS. 北航未来花园

热门文章

  1. 【TA-霜狼_may-《百人计划》】2.1 色彩空间
  2. c#实现微信公众号开发--服务号通过oauth2获取用户信息
  3. 客户端无法加入域,报错:“无法与域‘xxx.com’的Active Directory域控制器(AD DC)链接” 请确保键入的域名正确
  4. 这个项目真香,快速搭建API接口商城,最快当天上线,还有源代码
  5. 文献解读|2019-nCoV感染后胆管细胞特异性ACE2表达可能导致肝损伤
  6. Windows11为什么要关闭vbs?
  7. 图卷积网络GCN数学原理
  8. python 循环嵌套例子_Python循环嵌套案例-打印九九乘法表
  9. web前端设计与开发大作业(三)----注册与登陆界面
  10. web3j用于solidity智能合约maven插件