用python爬取4332条粽子数据进行分析,再送15盒粽子给大家
![](http://static.careerengine.us/api/aov2/http%3A_%7C__%7C_mmbiz.qpic.cn_%7C_mmbiz_jpg_%7C_tXYict40xfLiaicsVy2gPmAJOrW49VgWKqAMxQgagzCoD50jZqBibOjRibbZbkhry7h7icpOayB88bfNHHY2Giaf9Bqyw_%7C_0%3Fwx_fmt%3Djpeg.jpg)
↑ 点击上方 “凹凸数据” 关注 + 星标 ~
文章干货!有福利 !
![](http://static.careerengine.us/api/aov2/https%3A_%7C__%7C_mmbiz.qpic.cn_%7C_mmbiz_png_%7C_US10Gcd0tQEBNhn1uHVbVL9604SySChCXMzlF6icoRL5wxvqTMxpXIo5DKiar11HjiaSfwB8Id0kPYyJlTfcsH3gQ_%7C_640%3Fwx_fmt%3Dpng.jpg)
![](http://static.careerengine.us/api/aov2/https%3A_%7C__%7C_mmbiz.qpic.cn_%7C_mmbiz_jpg_%7C_YnV1icfkcN8YAPhRSalib9RvAdxHJeCTMzgZL02ribVCDBaHfFSQjQ7KvUBC7JNUrjicDhJiaiaaJOlY3D6VicqI7qISA_%7C_640%3Fwx_fmt%3Djpeg.jpg)
端午节快要到了,甜咸粽子之争也快要拉开帷幕。
![](http://static.careerengine.us/api/aov2/https%3A_%7C__%7C_mmbiz.qpic.cn_%7C_mmbiz_png_%7C_tXYict40xfLiaicsVy2gPmAJOrW49VgWKqAGxgg7MuswWQxSdNAvm4UocCl9BqZo5aRlsn2zECjlme0OZ76fQWawg_%7C_640%3Fwx_fmt%3Dpng.jpg)
小五准备用Python爬取淘宝上的粽子数据并进行分析,看看有什么发现。
(顺便送大家一波福利)
爬虫
爬取淘宝数据,本次采用的方法是:Selenium控制Chrome浏览器自动化操作[1]。其实我们还可以利用Ajax接口来构造链接,但是非常繁琐(包含加密秘钥等),直接使用Selenium来模拟浏览器会省去很多事情;
之前的文章我们也用过相同的方法,比如:爬电脑、爬电脑、爬完电脑买不起
最常见的问题是chromedriver驱动与谷歌浏览器的版本不匹配,很容易就可以解决。接下来,我们就开始利用selenium抓取淘宝商品,并使用Xpath解析得到商品名、价格、付款人数、店铺名、发货地址信息,最后将数据保存在本地。
爬虫过程如下图:
![](http://static.careerengine.us/api/aov2/https%3A_%7C__%7C_mmbiz.qpic.cn_%7C_mmbiz_gif_%7C_tXYict40xfLiaicsVy2gPmAJOrW49VgWKqAknVEKygL9VIjy7TK9Ar18boYrzh7VeQ73m3S6aJtDM3hpzkUzL5wUg_%7C_640%3Fwx_fmt%3Dgif.jpg)
from selenium import webdriver
# 搜索商品,获取商品页码
defsearch_product(key_word):
# 定位输入框
browser.find_element_by_id("q").send_keys(key_word)
# 定义点击按钮,并点击
browser.find_element_by_class_name('btn-search').click()
# 最大化窗口:为了方便我们扫码
browser.maximize_window()
# 等待15秒,给足时间我们扫码
time.sleep(15)
# 定位这个“页码”,获取“共100页这个文本”
page_info = browser.find_element_by_xpath('//div[@class="total"]').text
# 需要注意的是:findall()返回的是一个列表,虽然此时只有一个元素它也是一个列表。
page = re.findall("(\d+)",page_info)[0]
return page
详细爬虫代码下载见文末。
数据整理
此时我们爬取得到的数据:
![](http://static.careerengine.us/api/aov2/https%3A_%7C__%7C_mmbiz.qpic.cn_%7C_mmbiz_png_%7C_tXYict40xfLiaicsVy2gPmAJOrW49VgWKqAjqUNmJVnJKSDVibjfLox5nt1BibUKWt6nLTNqHuiby1xvRYicwlsnAtPsw_%7C_640%3Fwx_fmt%3Dpng.jpg)
数据还是比较粗糙的,有几个问题需要我们去处理:
添加列名 去除重复数据(翻页爬取过程中会有重复) 购买人数为空的记录,替换成 0人付款
将购买人数转换为销量(注意部分单位为 万
)删除无发货地址的商品,并提取其中的省份
部分代码:
# 删除无发货地址的商品,并提取省份
df = df[df['发货地址'].notna()]
df['省份'] = df['发货地址'].str.split(' ').apply(lambda x:x[0])
# 删除多余的列
df.drop(['付款人数', '发货地址', 'num', 'unit'], axis=1, inplace=True)
# 重置索引
df = df.reset_index(drop=True)
df.head(10)
![](http://static.careerengine.us/api/aov2/https%3A_%7C__%7C_mmbiz.qpic.cn_%7C_mmbiz_png_%7C_tXYict40xfLiaicsVy2gPmAJOrW49VgWKqAJkuLxau1sHb8JoM8vL3tPgPBXsHyvlen6vXzZgtceTgBZ6nezRU3yA_%7C_640%3Fwx_fmt%3Dpng.jpg)
这样我们就对数据完成了清洗与整理,方便下一步进行可视化。
顺便做个排序,看看什么粽子最贵!
df1 = df.sort_values(by="价格", axis=0, ascending=False)
df1.iloc[:5,:]
![](http://static.careerengine.us/api/aov2/https%3A_%7C__%7C_mmbiz.qpic.cn_%7C_mmbiz_png_%7C_tXYict40xfLiaicsVy2gPmAJOrW49VgWKqAkZQaYj4b5avdDgOMGTyCQV0e3hAS5jL2fq1LQdpsXsic4YBqpZxiajug_%7C_640%3Fwx_fmt%3Dpng.jpg)
前三名都来自御茶膳房旗舰店,让我们看看1780元的粽子长啥样吧!
![](http://static.careerengine.us/api/aov2/https%3A_%7C__%7C_mmbiz.qpic.cn_%7C_mmbiz_png_%7C_tXYict40xfLiaicsVy2gPmAJOrW49VgWKqAWIUs1rPcNXzsgNledsgbjj2IYpgxGSoibwdV6cKac9IxNd2oHHqT2hQ_%7C_640%3Fwx_fmt%3Dpng.jpg)
想尝尝![](//static.careerengine.us/api/aov2/https%3A_%7C__%7C_mmbiz.qpic.cn_%7C_mmbiz_png_%7C_tXYict40xfLiaicsVy2gPmAJOrW49VgWKqAYWWFzhgBicNwrorkntCqH6ul4r4XlwW9aoO6jibloYZsmfgyHXWWV70A_%7C_640%3Fwx_fmt%3Dpng.jpg)
![](http://static.careerengine.us/api/aov2/https%3A_%7C__%7C_mmbiz.qpic.cn_%7C_mmbiz_png_%7C_tXYict40xfLiaicsVy2gPmAJOrW49VgWKqAYWWFzhgBicNwrorkntCqH6ul4r4XlwW9aoO6jibloYZsmfgyHXWWV70A_%7C_640%3Fwx_fmt%3Dpng.jpg)
数据可视化
本文我们打算用pyecharts进行可视化展示。有同学可能使用的是老版本(0.5X),Pyecharts的1.x版本与老版本(0.5X)不兼容,如果无法导入可能是这个问题哈。
可视化所有语句均基于
v1.7.1
,通过以下语句可查询你的pyecharts版本:import pyecharts
print(pyecharts.__version__)
具体安装与使用案例可以参考教程:Pyecharts 1.x 教程。
扇形图
最贵的粽子1780元看来是吃不起了,那大家都买什么价位的呢?
先按照淘宝推荐的区间划分一下:
defprice_range(x):#按照淘宝推荐划分价格区间
if x <= 22:
return'22元以下'
elif x <= 115:
return'22-115元'
elif x <= 633:
return'115-633元'
else:
return'633元以上'
再使用
pyecharts
来生成不同价格区间的粽子销量占比图。![](http://static.careerengine.us/api/aov2/https%3A_%7C__%7C_mmbiz.qpic.cn_%7C_mmbiz_png_%7C_tXYict40xfLiaicsVy2gPmAJOrW49VgWKqAF6936I9wSSicmYxDWhGyETrMUHZ6CFY5UuQVicelKYk0X4KO8lRI9yzw_%7C_640%3Fwx_fmt%3Dpng.jpg)
看来百元以内的粽子(礼盒装)才是大家的正常承受范围,不过我还是选择小区门口的5块钱3个。
词云图
我们用
jieba
对爬取得到的商品名称分词,生成词云。from pyecharts.charts import WordCloud
from pyecharts.globals import SymbolType
# 词云图
word1 = WordCloud(init_opts=opts.InitOpts(width='1350px', height='750px'))
word1.add("", [*zip(key_words.words, key_words.num)],
word_size_range=[20, 200],
shape=SymbolType.DIAMOND)
word1.set_global_opts(title_opts=opts.TitleOpts('粽子商品名称词云图'),
toolbox_opts=opts.ToolboxOpts())
word1.render("粽子商品名称词云图.html")
![](http://static.careerengine.us/api/aov2/https%3A_%7C__%7C_mmbiz.qpic.cn_%7C_mmbiz_png_%7C_tXYict40xfLiaicsVy2gPmAJOrW49VgWKqA0G4koRibCmdHbhibHjBDlwdEMvuD1fPxm2kHZLJ3OqDCsEvRjyGDfDDw_%7C_640%3Fwx_fmt%3Dpng.jpg)
硕大的
粽子
周围环绕着几个突出的关键词:礼盒装
、鲜肉
、蛋黄
、嘉兴
、豆沙
、端午节
。除去端午节相关的词汇,我们通过关键词大小似乎就知道几种口味的受欢迎情况。查阅资料对比一下,还真是大体一致。
心疼我枣粽。
至于嘉兴这个地名,我们后文会继续提到。
![](http://static.careerengine.us/api/aov2/https%3A_%7C__%7C_mmbiz.qpic.cn_%7C_mmbiz_jpg_%7C_tXYict40xfLiaicsVy2gPmAJOrW49VgWKqARbzA17rT8ozUqpDfM7gOzeREMrUPrQGxL5FBZMibLNrO8sEic6x1lOQw_%7C_640%3Fwx_fmt%3Djpeg.jpg)
条形图
上文我们查到了最贵的粽子,那么销量最好的粽子/店铺是什么呢?
安排
![](http://static.careerengine.us/api/aov2/https%3A_%7C__%7C_mmbiz.qpic.cn_%7C_mmbiz_png_%7C_tXYict40xfLiaicsVy2gPmAJOrW49VgWKqA7ztqrMuibjvgBSaCalfR5xxwftaoquK8ibQ1e0N8wMWBm8cia92USsia7w_%7C_640%3Fwx_fmt%3Dpng.jpg)
五芳斋
共4款入围,其中一款礼盒装达到了100万+的销量,应该比这个还多(参见微信的10w+)。真真老老
紧随其后,3款粽子进入TOP10。其余的品牌还有稻香村
和知味观
,额,第九名是卖粽叶的,看来自己包粽子的需求也是蛮大的嘛。![](http://static.careerengine.us/api/aov2/https%3A_%7C__%7C_mmbiz.qpic.cn_%7C_mmbiz_png_%7C_tXYict40xfLiaicsVy2gPmAJOrW49VgWKqADoRUnu4TxDibRgg2P9eQicVnk0ag8g5gHyNlWbCL89icEmgdAQ8rvb3JQ_%7C_640%3Fwx_fmt%3Dpng.jpg)
粽子店铺销量Top10其实与商品相似,
五芳斋官方旗舰店
和真真老老旗舰店
占据首位,遥遥领先。经过查阅,五芳斋,真真老老,都为嘉兴的粽子两大品牌,那难怪
嘉兴
在词云图里那么突出。嘉兴属于浙江省
,销量冠亚军都在这里,那浙江岂不是占比很大。还真是这样:
地图
继续使用
pyecharts
来生成各省份粽子销量分布图[2]from pyecharts.charts import Map
# 计算销量
province_num = df.groupby('省份')['销量'].sum().sort_values(ascending=False)
# 绘制地图
map1 = Map(init_opts=opts.InitOpts(width='1350px', height='750px'))
map1.add("", [list(z) for z in zip(province_num.index.tolist(), province_num.values.tolist())],
maptype='china'
)
map1.set_global_opts(title_opts=opts.TitleOpts(title='各省份粽子销量分布'),
visualmap_opts=opts.VisualMapOpts(max_=300000),
toolbox_opts=opts.ToolboxOpts()
)
map1.render("各省份粽子销量分布.html")
![](http://static.careerengine.us/api/aov2/https%3A_%7C__%7C_mmbiz.qpic.cn_%7C_mmbiz_png_%7C_tXYict40xfLiaicsVy2gPmAJOrW49VgWKqAM5Uib1lWo3UUeQA6MD7hReLz2iaxaGO66eABg8IH34jOFMe0ElgjS8VQ_%7C_640%3Fwx_fmt%3Dpng.jpg)
这个销量占比差异真的是太大了。
可以说中国粽子看浙江,浙江粽子看嘉兴[3](通过计算发货地址为浙江的粽子销量占比70.6%,而嘉兴占浙江的87.4%)
![](http://static.careerengine.us/api/aov2/https%3A_%7C__%7C_mmbiz.qpic.cn_%7C_mmbiz_gif_%7C_b8ezmQwia6xiauVbcnFiaH9uxob4UNOEZPeEJZmWcf4lRycss8RvrAU9ibFmrDaj1nrKxEEic5ibG0YULTnwKI8cTnZQ_%7C_640%3Fwx_fmt%3Dgif.jpg)
小结
粽子自古以来就代表着纪念和美好的祝愿。
而在这个并不安稳的2020,端午的粽子更多了一些祈愿国泰民安,顺利度过阴霾的意义。
“端午安康”不再是一句客套话,而是我们能送给彼此的最好的愿景。
![](http://static.careerengine.us/api/aov2/https%3A_%7C__%7C_mmbiz.qpic.cn_%7C_mmbiz_gif_%7C_tXYict40xfLiaicsVy2gPmAJOrW49VgWKqAQdVQ8f0iatOc2g8G36kLeTSBibL7eiaU7Dic6NsIEz1oN6hBB0pqDerNibw_%7C_640%3Fwx_fmt%3Dgif.jpg)
本文数据和爬虫可视化源码下载地址:
https://alltodata.cowtransfer.com/s/d11c8906cd9c4c
参考文章
数据分析与统计学之美: 《手把手教你爬取淘宝的笔记本电脑数据,指导你如何选购电脑!》
[2]CDA数据分析师: 《全网谁家热干面销量最高?》
[3]新农堂: 《你对粽子的力量可能一无所知》
福利时间
端午节就要来了,腾讯云+社区联合凹凸数据给大家送15份腾讯云+社区定制五芳斋粽子礼盒
没错,五芳斋就是上文中经过我们分析得到的:最受欢迎(销量最好)的粽子品牌。
![](http://static.careerengine.us/api/aov2/https%3A_%7C__%7C_mmbiz.qpic.cn_%7C_mmbiz_jpg_%7C_2GcSFhuAFlA6dDZKEWpdC0Bp7B0YViaO3LW4AK7aiaZnjVo6FjbIIVzTBNJDN95elXmWHUXBKZJPxU2iaNLSu4FpA_%7C_640%3Fwx_fmt%3Djpeg.jpg)
现在公布赠送规则,一定要按照要求参与才有机会获得!
![](http://static.careerengine.us/api/aov2/https%3A_%7C__%7C_mmbiz.qpic.cn_%7C_mmbiz_png_%7C_tXYict40xfLiaicsVy2gPmAJOrW49VgWKqAAh0blo0C50MjnyXetx6NGdlH7U28CCdltT5YFTObT5cZSN5WTiaIibGw_%7C_640%3Fwx_fmt%3Dpng.jpg)
活动1:扫描上方二维码微信授权登陆并关注我的云+社区主页,截图并扫描文末最后一张二维码上传即可参与,抽出7份!
![](http://static.careerengine.us/api/aov2/https%3A_%7C__%7C_mmbiz.qpic.cn_%7C_mmbiz_png_%7C_tXYict40xfLiaicsVy2gPmAJOrW49VgWKqARicUl2ZicFofPInyZ49CezdMXXSSxza0s7MmmPTLuvia2lYxhLnWzW7jQ_%7C_640%3Fwx_fmt%3Dpng.jpg)
活动2:活动1关注后,可以评论我的任意一篇云+社区文章,同活动1,截图上传抽出7份!
![](http://static.careerengine.us/api/aov2/https%3A_%7C__%7C_mmbiz.qpic.cn_%7C_mmbiz_png_%7C_tXYict40xfLiaicsVy2gPmAJOrW49VgWKqAe0s83zfEBn9kvKhOIMLay8lGAclRbLIM9B0SadtJOXwPKT1cDxepOA_%7C_640%3Fwx_fmt%3Dpng.jpg)
活动3:点亮文末在看并点击下方文字给我留言(不限主题),点赞第一名赠送粽子1份。
最后再次感谢腾讯云+社区对本活动的支持,祝各位好运!
注1:为保证粽子能及时送达幸运读者的手中,本次活动截止时间为6.19日20点(明天晚8点)!
注2:以上三个活动可以同时参加,但同一用户只能获得一份礼盒!
注3:本次活动将不再单独发文公布获赠名单,所以请所有参与活动的同学添加小五微信(zpw505)关注最新消息。同时一定要仔细阅读规则参与,谢谢!
活动1、2的截图反馈地址:
![](http://static.careerengine.us/api/aov2/https%3A_%7C__%7C_mmbiz.qpic.cn_%7C_mmbiz_png_%7C_tXYict40xfLiaicsVy2gPmAJOrW49VgWKqAeQ1OXK6B6J2luPnZtia5Qk36ryTaly7K0v65P69yRva6GXVnQDIUQ5g_%7C_640%3Fwx_fmt%3Dpng.jpg)
祝大家好运~
关键词
数据
版本
嘉兴
省份
店铺
最新评论
推荐文章
作者最新文章
你可能感兴趣的文章
Copyright Disclaimer: The copyright of contents (including texts, images, videos and audios) posted above belong to the User who shared or the third-party website which the User shared from. If you found your copyright have been infringed, please send a DMCA takedown notice to [email protected]. For more detail of the source, please click on the button "Read Original Post" below. For other communications, please send to [email protected].
版权声明:以上内容为用户推荐收藏至CareerEngine平台,其内容(含文字、图片、视频、音频等)及知识版权均属用户或用户转发自的第三方网站,如涉嫌侵权,请通知[email protected]进行信息删除。如需查看信息来源,请点击“查看原文”。如需洽谈其它事宜,请联系[email protected]。
版权声明:以上内容为用户推荐收藏至CareerEngine平台,其内容(含文字、图片、视频、音频等)及知识版权均属用户或用户转发自的第三方网站,如涉嫌侵权,请通知[email protected]进行信息删除。如需查看信息来源,请点击“查看原文”。如需洽谈其它事宜,请联系[email protected]。