最近想入手一台新手机,考虑到国产手机今时不同往日,无论是销量还是话语权在世界上都足够的分量,欧洲华为,印度小米,美国一加,国产手机以极为迅猛的速度攻占世界各地的手机市场。作为历来支持国产手机的忠实用户,结合对国产手机的基本认知,准备从华为、小米、OPPO、VIVO四大国产手机中做出抉择。

为了能够用数据体现这四家手机产品市场的销量、价格等真实情况,由于Python语言简明便捷,小编这边准备使用Python来对“某宝”平台进行手机相关的数据爬取。

数据可视化分析方面,虽然Python提供的numpy、pandas、matplotlib等第三方库来对数据进行计算处理,同时最终生成所需要的可视化报告,但是做出的图表缺乏动态交互,图表样式属性设置等方面也比较繁琐,并且不便进行深入的OLAP多维分析,所以这边直接使用FineBI工具来对从“某宝”平台爬取过来的手机数据进行数据分析统计。

原理介绍

这次的诉求很简单,就是想看看国产机子的销量排名和售价情况。

数据层方面会先通过Python抓取到WEB端的网页数据,之后对爬取到数据进行解析再而存储到MYSQL数据入库。最后应用层的数据处理、数据计算统计、图表可视化呈现等工作全都交由我们的FineBI工具完成。

操作步骤

1.引入相关Pyhon库包,编写MySQL数据入库函数

首先新建python工程,引入本次爬取网页数据和写入MySQL数据库所需要的pandas、re、request、pymysql这四个相关库包:

import pandas

import re

import requests

import pymysql

def ExecuteSQL(title,price,sales): #写入数据到mysql数据库

conn = pymysql.connect(host='xxx.xxx.xxx.xx', port=xxxx, user='xxxx', passwd='xxxx', db='xxxx', charset='utf8') #对应xx参数值修改成自己数据库的即可

cursor = conn.cursor()

# cursor.execute('CREATE TABLE MOBILE_DATA(品牌 varchar(100),价格 double,销量 int)')

# cursor.execute('DROP TABLE MOBILE_DATA')

cursor.execute("INSERT INTO MOBILE_DATA(品牌,价格,销量) VALUES ('%s',%d,'%d')"%(title,price,sales)) #执行SQL数据插入

print('数据插入成功!')

print(title,price,sales)

conn.commit() #提交执行命名

cursor.close() #释放游标对象

conn.close() #释放数据库连接对象

2.获取网页数据

然后如下图所示,定义好模拟浏览器访问header的值,通过编写Python代码用requests获取到”某宝“平台网页中的request信息:

for page in range(1,7): # 循环翻页,共7页

url = 'https://s.taobao.com/search?q=%E6%89%8B%E6%9C%BA&imgfile=&commend=all&ssid=s5-e&search_type=item&sourceId=tb.index&spm=a21bo.2017.201856-taobao-item.1&ie=utf8&initiative_id=tbindexz_20170306&cps=yes&ppath=2176%3A136877751%3B2176%3A3244779%3B2176%3A91621%3B2176%3A39862256%3B2176%3A28247'

header = {'user-agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.84 Safari/537.36',

'cookie':'thw=cn; t=be73ea5ec1ffbeb254d0a3535dd00415; cna=HqWrEpIZeG4CAbYSAEIb6bav; hng=CN%7Czh-CN%7CCNY%7C156; miid=596160490770762658; lgc=%5Cu5815%5Cu843D%5Cu4E4B%5Cu6CEAa; tracknick=%5Cu5815%5Cu843D%5Cu4E4B%5Cu6CEAa; tg=0; uc2=wuf=https%3A%2F%2Ftrade.tmall.com%2Fdetail%2ForderDetail.htm%3Fbiz_order_id%3D104827474284154168%26forward_action%3D; x=e%3D1%26p%3D*%26s%3D0%26c%3D0%26f%3D0%26g%3D0%26t%3D0%26__ll%3D-1%26_ato%3D0; uc3=sg2=VWxidJMT8gLCYBc%2BxP5FJdYe9%2FXfUvq2%2Byf0cFWq90Q%3D&nk2=1RSXayUHM0Sl&id2=UUpkvTJ9k5HsSA%3D%3D&vt3=F8dBzLbVzPYkPml1NZk%3D&lg2=W5iHLLyFOGW7aA%3D%3D; uss=VvioJOfdaT365u5YugXSKrRnG47jUQQG9UQvstfUu5fjcHD0zxGQLEmn; _cc_=VFC%2FuZ9ajQ%3D%3D; mt=ci=67_1; tk_trace=oTRxOWSBNwn9dPy4KVJVbutfzK5InlkjwbWpxHegXyGxPdWTLVRjn23RuZzZtB1ZgD6Khe0jl%2BAoo68rryovRBE2Yp933GccTPwH%2FTbWVnqEfudSt0ozZPG%2BkA1iKeVv2L5C1tkul3c1pEAfoOzBoBsNsJySQJwqIKz2kX83uPP5e4iE9t1ZpHdHZkk218jfUuTKISIEGrGMtBctY%2B2vMCmzCRVhIqleLIl%2BRRQHs4ekW3wNcZhDfwkkQzp9RF7kjYiNbNLTbo2mRCr3Wf97aW%2FfC72uuEf9Tcc6cNT9QCiB0y7NxqzS4M5NvMkxl5KoKbA%2BorLqu5Y9jpCfT31RlA%3D%3D; cookie2=1c16eb46ef00c015dd101f731c258d77; _tb_token_=8de4c4560b63; v=0; alitrackid=www.taobao.com; lastalitrackid=www.taobao.com; swfstore=107855; JSESSIONID=ED726367865542B7BA84D801D1C72812; isg=AhcXOlKpAS4SKIXa0x_6AhsZpovNTcSrwSKOp2lEKOZNmDfacSx7DtWyjg59; uc1=cookie14=UoTdf1DFLRnICg%3D%3D',

'accept':'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8',

'path':'/search?q=%E6%89%8B%E6%9C%BA&imgfile=&commend=all&ssid=s5-e&search_type=item&sourceId=tb.index&spm=a21bo.2017.201856-taobao-item.1&ie=utf8&initiative_id=tbindexz_20170306'} #定义模拟浏览器访问header的值

html = requests.request('GET', url, headers=header) #网页request信息获取

3.HTML标签解析(Script格式)

此时我们可以查看华为、小米、OPPO、VIVO四大国产手机中的网页信息,用浏览器自带的F12工具检查相关代码即可发现,“某宝”的商品数据信息原来是存储在Script变量中。

接下来我们只需要使用re,按照指定的标签格式,对整个网页的进行数据信息查找获取,然后将对象存储在data中即可:

ren = re.compile('"title":"(.*?)","pic_url":"(.*?)","price":"(.*?)","trace":"(.*?)","month_sales":"(.*?)"')

data = re.findall(ren, html.text)

4.MySQL数据入库

解析好数据之后,再将解析好的数据写入到MySQL数据库中:

data2 = pandas.DataFrame(data) #将data对象转换为DataFrame类型方便处理

for rows in range(1,data2.shape[0]): #循环遍历DataFrame中的所有行数据

ExecuteSQL(data2.values[rows][0],float(data2.values[rows][2]),int(data2.values[rows][4])) #MySQL数据入库

count=count+1 #计数器累加

print('恭喜您,数据已经全部爬取完毕,一共%d条数据!'%(count))

循环遍历”某宝“平台华为、小米、OPPO、VIVO四大国产手机中的相关信息数据,页面7页,共计282条数据。

5.验证数据入库

直接通过FineBI提供的数据配置端的功能,添加SQL数据集(或者直接添加表也行),查看我和验证刚刚爬取并且入库的数据是否已经真正成功入库到MySQL中。

如下图所示,Python果然不辱使命,我要的”某宝“平台华为、小米、OPPO、VIVO四大国产手机中数据都已经成功写入到了我的MySQL数据库中了。

6.可视化分析

分为几个维度:

  • 国产四大品牌手机的整体销售情况国产手机销售量排名销售重点关注机型国产手机售价排名销售重点关注机型

涉及到的指标也比较简单,基本通过FineBI拖拽数据字段即可呈现可视化。

下面这个动图,以国产四大手机销量统计词云图为例给大家简单展示可视化过程,其他同理。

(想按照手机大品牌统计的话可以直接对品牌字段用FineBI进行自定义分组即可)

小编花了10分钟就呈现基本的分析架构,而后又花了30分钟,加了点可视化元素美化一下。刷刷的就将我想要看的华为、小米、OPPO、VIVO四大国产手机销售信息以可视化的形式呈现出来了。(国产四大手机均价/总销量排名、国产四大手机各品牌价格/销量词云图、国产四大手机各品牌价格/销量Top10、销售额分布图等)

分析结果

1.淘宝网平台中,华为、小米、OPPO、VIVO四大国产手机总销量为751万台,总销售额为142.97亿。其中华为品牌占据总体销售额的44.40%,淘宝销售额高达61.84亿,小米、VIVO、OPPO其他三个品牌的总销售额分别占据28.98%、17.90%、8.72%。

2.从国产四大手机的均价来看,VIVO和华为分别以2167元、2021元的价格分别排在前两位,OPPO和小米的均价分别为1979元、1502元排在三、四位。小米手机价格相对低廉,不过市场占有率还可以,仅次于华为;而VIVO、OPPO这两款国产手机,历来被广大用户称为“厂妹机”,但是通过李易峰、彭于晏、鹿晗等明星小鲜肉和各大传媒渠道的积极代言,吸引了无数的小迷妹粉的购买,也是抢占了华为手机市场的一片江山。

3.再来看看国产四大手机的各品牌价格统计,华为MATE RS保时捷手机以9406元的价格高居首位,土豪专属啊,这价格无法撼动。但是值得一提的是目前在淘宝出售的华为Mate 10价格居然降到了3033元!记得前年入手Mate9的时候还花了4000多呢,果然手机随着时间推移价格变化还是挺大的。手机销量方面,品牌销量最高的是小米手机8,淘宝总销量为77万台(可以通过图表联动查看其价格为2352元),人气还是很火的。但是相比之下华为Mate 10的高配置下的3033元的价格,让小编完全忍不住剁手啊,就是你啦!

最后

网页爬虫数据抓取,Python首屈一指。但是对于数据统计和可视化展现方面来说,操作简单便捷、拖拽式的FineBI绝对是数据分析小白的入门上佳之选。

Python完成对网页数据的抓取和解析存储之后,配合FineBI强大的数据可视化呈现能力则圆满地完成了我本次对某宝平台四大国产手机数据的统计和分析需求,绝对良心推荐。

以上就是小编狂奔在数据可视化道路上的一些心得总结~欢迎大家共同学习和交流。

编程语言

用Python爬数据,FineBI做分析后,我发现淘宝的手机原来这么便宜相关推荐

  1. 表哥用Python爬取数千条淘宝商品数据后,发现淘宝这些潜规则!

    本文记录了笔者用 Python 爬取淘宝某商品的全过程,并对商品数据进行了挖掘与分析,最终得出结论. 项目内容 本案例选择商品类目:沙发. 数量:共 100 页  4400 个商品. 筛选条件:天猫. ...

  2. python爬虫怎么爬同一个网站的多页数据-如何用Python爬数据?(一)网页抓取

    如何用Python爬数据?(一)网页抓取 你期待已久的Python网络数据爬虫教程来了.本文为你演示如何从网页里找到感兴趣的链接和说明文字,抓取并存储到Excel. 需求 我在公众号后台,经常可以收到 ...

  3. python爬网站数据实例-如何用Python爬数据?(一)网页抓取

    如何用Python爬数据?(一)网页抓取 你期待已久的Python网络数据爬虫教程来了.本文为你演示如何从网页里找到感兴趣的链接和说明文字,抓取并存储到Excel. 需求 我在公众号后台,经常可以收到 ...

  4. Python+大数据-数据处理与分析-pandas快速入门

    Python+大数据-数据处理与分析-pandas快速入门 1.Pandas快速入门 1.1DataFrame和Series介绍 1)DataFrame 用来处理结构化数据(SQL数据表,Excel表 ...

  5. Python+大数据-数据处理与分析(三)-数据清洗

    Python+大数据-数据处理与分析(三)-数据清洗 1. 数据组合 1.1 数据聚合简介 在动手进行数据分析工作之前,需要进行数据清理工作,数据清理的主要目标是: 每个观测值成一行 每个变量成一列 ...

  6. 爬取天猫国际、京东全球购、淘宝全球购的商品数据

    公司内部mini项目–智慧选品 "智慧选品"项目主要是方便采购人员了解其他竞品平台的商品数据,将其他平台上卖的特别好的商品数据展示给采购人员,方便他们去采购商品,扩大公司自己的商品 ...

  7. Python爬虫实战(5):模拟登录淘宝并获取所有订单

    Python爬虫入门(1):综述 Python爬虫入门(2):爬虫基础了解 Python爬虫入门(3):Urllib库的基本使用 Python爬虫入门(4):Urllib库的高级用法 Python爬虫 ...

  8. 你刚才淘宝上买衣服---具体分析技术工艺(淘宝页面显示处理的页面)

    声明:文章和保存之前看到在计算机网络中的文件,有没有办法找到原文地址.在该声明.为了上网project教师致敬. 你找到新的一年.所以,我想给你女朋友买一件毛衣,你打开www.taobao.com.这 ...

  9. Python Selenium淘宝自动登陆最新版,无意间发现淘宝登陆漏洞?

    一.前言 之前写过一篇爬取淘宝商品信息的博客----<<传送门,当时还是新手,急于完成爬取目标,干脆手动登录淘宝使浏览器保存我的信息,然后使用本地用户配置控制浏览器,投机取巧地解决了登录问 ...

最新文章

  1. js map 箭头_JS异常函数之箭头函数
  2. quilleditor 字体大小设置_vue-quill-editor如何设置字体默认大小?
  3. ] 求鉴定:《终于知道ramdisk 4g是如何使用4G以上内存了,慎用!》
  4. 我是主考官:给一位应届毕业生的回信
  5. HDU5620 KK's Steel【菲波拉契数列+水题】
  6. document.body和document.documentElement的区别
  7. JSP实用教程(第三版 清华大学出版社)中遇到的问题和解释
  8. 形式语言与自动机 图灵机
  9. 怎样在Axure中创建高保真的Axure原型(二)
  10. 在c语言中 fb abs是什么,abs()在c语言里表示什么意思?它是库函数吗?
  11. Python开发系列课程(14) - 玩转正则表达式
  12. linux 有道笔记,Linux笔记:manjaro_折腾笔记
  13. 关于Bundle Adjustment(BA)的直观理解
  14. python excel截图保存_如何用Python读取Excel中图片?又如何用Python往Excel中写入图片?...
  15. android 跑马灯出现重复跳动、不滚动问题
  16. c和c++(c whith class)的相互调用引用
  17. 记录mysql查询过去十二个月中每个月的数据情况(含本月)
  18. 乐普生物通过聆讯:预计年亏10亿 海通证券与阳光人寿是股东
  19. 阿里mPaas中扫一扫功能的接入
  20. SVD因式分解实现协同过滤-及源码实现

热门文章

  1. hbase记录日志wal_SQL Server事务日志–第1部分–日志结构和预写日志记录(WAL)算法
  2. SQL Server查询存储–概述
  3. 如何使用xp_cmdshell扩展过程
  4. mysql 建表语句示例_MySQL Create Table语句和示例
  5. 网络协议笔记-数据链路层
  6. 【动态规划】开心的小明
  7. html中charset和content-language的区别
  8. css 输入框 按钮 对齐,CSS让input button元素对齐的代码收集
  9. @SuppressWarnings(resource)
  10. Sasha and a Very Easy Test CodeForces - 1109E (数学,线段树)