Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >用python爬取4332条粽子数据进行分析,揭秘甜咸肉粽的江湖!

用python爬取4332条粽子数据进行分析,揭秘甜咸肉粽的江湖!

作者头像
腾讯大讲堂
发布于 2020-06-28 03:10:11
发布于 2020-06-28 03:10:11
51700
代码可运行
举报
运行总次数:0
代码可运行

端午节快要到了,甜咸粽子之争也快要拉开帷幕。

小五准备用Python爬取淘宝上的粽子数据并进行分析,看看有什么发现。

爬虫

爬取淘宝数据,本次采用的方法是:Selenium控制Chrome浏览器自动化操作[1]。其实我们还可以利用Ajax接口来构造链接,但是非常繁琐(包含加密秘钥等),直接使用Selenium来模拟浏览器会省去很多事情;

之前的文章我们也用过相同的方法,比如:爬电脑、爬电脑、爬完电脑买不起

最常见的问题是chromedriver驱动与谷歌浏览器的版本不匹配,很容易就可以解决。接下来,我们就开始利用selenium抓取淘宝商品,并使用Xpath解析得到商品名、价格、付款人数、店铺名、发货地址信息,最后将数据保存在本地。

爬虫过程如下图:

selenium自动化爬取(需要淘宝扫描登录一次)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
from selenium import webdriver

# 搜索商品,获取商品页码
def search_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

详细爬虫代码下载见文末。

数据整理

此时我们爬取得到的数据:

整理前的数据

数据还是比较粗糙的,有几个问题需要我们去处理:

  1. 添加列名
  2. 去除重复数据(翻页爬取过程中会有重复)
  3. 购买人数为空的记录,替换成0人付款
  4. 将购买人数转换为销量(注意部分单位为万)
  5. 删除无发货地址的商品,并提取其中的省份

部分代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 删除无发货地址的商品,并提取省份
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) 

整理后的数据

这样我们就对数据完成了清洗与整理,方便下一步进行可视化。

顺便做个排序,看看什么粽子最贵!

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
df1 = df.sort_values(by="价格", axis=0, ascending=False)
df1.iloc[:5,:]

价格TOP5的粽子

前三名都来自御茶膳房旗舰店,让我们看看1780元的粽子长啥样吧!

想尝尝

数据可视化

本文我们打算用pyecharts进行可视化展示。有同学可能使用的是老版本(0.5X),Pyecharts的1.x版本与老版本(0.5X)不兼容,如果无法导入可能是这个问题哈。

可视化所有语句均基于v1.7.1,通过以下语句可查询你的pyecharts版本:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import pyecharts

print(pyecharts.__version__)

具体安装与使用案例可以参考教程:Pyecharts 1.x 教程

扇形图

最贵的粽子1780元看来是吃不起了,那大家都买什么价位的呢?

先按照淘宝推荐的区间划分一下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
def price_range(x): #按照淘宝推荐划分价格区间
    if x <= 22:
        return '22元以下'
    elif x <= 115:
        return '22-115元'
    elif x <= 633:
        return '115-633元'
    else:
        return '633元以上'

再使用pyecharts来生成不同价格区间的粽子销量占比图。

不同价格区间的粽子销量占比

看来百元以内的粽子(礼盒装)才是大家的正常承受范围,不过我还是选择小区门口的5块钱3个。

词云图

我们用jieba对爬取得到的商品名称分词,生成词云。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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")

粽子商品名称词云图

硕大的粽子周围环绕着几个突出的关键词:礼盒装、鲜肉、蛋黄、嘉兴、豆沙、端午节。除去端午节相关的词汇,我们通过关键词大小似乎就知道几种口味的受欢迎情况。

查阅资料对比一下,还真是大体一致。

心疼我枣粽。

至于嘉兴这个地名,我们后文会继续提到。

条形图

上文我们查到了最贵的粽子,那么销量最好的粽子/店铺是什么呢?

安排

粽子商品销量Top10

五芳斋共4款入围,其中一款礼盒装达到了100万+的销量,应该比这个还多(参见微信的10w+)。真真老老紧随其后,3款粽子进入TOP10。其余的品牌还有稻香村和知味观,额,第九名是卖粽叶的,看来自己包粽子的需求也是蛮大的嘛。

粽子店铺销量Top10

粽子店铺销量Top10其实与商品相似,五芳斋官方旗舰店和真真老老旗舰店占据首位,遥遥领先。

还真是这样:

地图

继续使用pyecharts来生成各省份粽子销量分布图[2]

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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")

各省份粽子销量分布

这个销量占比差异真的是太大了。

可以说中国粽子看浙江,浙江粽子看嘉兴[3](通过计算发货地址为浙江的粽子销量占比70.6%,而嘉兴占浙江的87.4%)

纪录片《舌尖上的中国》里的嘉兴粽

小结

粽子自古以来就代表着纪念和美好的祝愿。

而在这个并不安稳的2020,端午的粽子更多了一些祈愿国泰民安,顺利度过阴霾的意义。

“端午安康”不再是一句客套话,而是我们能送给彼此的最好的愿景。

本文数据和爬虫可视化源码下载地址:

https://alltodata.cowtransfer.com/s/d11c8906cd9c4c

参考文章

[1]数据分析与统计学之美: 《手把手教你爬取淘宝的笔记本电脑数据,指导你如何选购电脑!》 [2]CDA数据分析师: 《全网谁家热干面销量最高?》 [3]新农堂: 《你对粽子的力量可能一无所知》

仅需少量视频观看记录,就可以精准推断你的习惯

产品成长期如何用设计提升产品增长

从微信支付看研发如何提高运营效能

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

本文分享自 腾讯大讲堂 微信公众号,前往查看

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

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
用python爬取4332条粽子数据进行分析,看哪个最受大家欢迎
爬取淘宝数据,本次采用的方法是:Selenium控制Chrome浏览器自动化操作[1]。其实我们还可以利用Ajax接口来构造链接,但是非常繁琐(包含加密秘钥等),直接使用Selenium来模拟浏览器会省去很多事情;
朱小五
2020/06/18
7623
用python爬取4332条粽子数据进行分析
爬取淘宝数据,本次采用的方法是:Selenium控制Chrome浏览器自动化操作[1]。其实我们还可以利用Ajax接口来构造链接,但是非常繁琐(包含加密秘钥等),直接使用Selenium来模拟浏览器会省去很多事情;
朱小五
2020/06/28
5800
用python爬取4332条粽子数据进行分析
Python告诉你:粽子甜咸之争谁胜出?吃货最爱买谁家的粽子?
【导语】:今天我们来聊聊粽子,Python分析部分请看第三部分。公众号后台,回复关键字“粽子”获取完整数据。
CDA数据分析师
2020/06/29
8510
Python告诉你:粽子甜咸之争谁胜出?吃货最爱买谁家的粽子?
用Python爬取淘宝4403条大裤衩数据进行分析,终于找到可以入手的那一条
炎炎夏日,长裤已难以满足广大男生的需求,为了在搬砖和摆摊的过程中增添一丝舒适感,他们开始寻找一种神奇的存在——大裤衩。J哥在种菜的这些日子里也日益感受到大裤衩的重要性,于是,默默打开了淘宝并搜索了大裤衩,但翻了半天也不知道买啥。
Python进阶者
2020/09/22
8360
用Python爬取淘宝4403条大裤衩数据进行分析,终于找到可以入手的那一条
我用Python分析1585家电商车厘子销售数据,发现这些秘密
智利驻华大使馆商务参赞娜塔曾表示:“2020-2021产季车厘子实现了丰收,预计今年有50万吨左右的车厘子进入中国市场。”自2020年12月中旬开始,智利海运车厘子陆续到达中国,运输成本较此前空运方式大幅下滑。这意味着,国内消费者将能以更低的价格买到车厘子。然而,近日国内已有多地进口车厘子核酸检测结果为阳性,在这种情况下,你还敢大呼“车厘子自由”吗?
Python进击者
2021/03/09
5570
我用Python分析1585家电商车厘子销售数据,发现这些秘密
用Python+PPT对某宝月饼数据进行可视化分析~
过几天就中秋了,小刀还没收到公司送的月饼 ,只能用羡慕的眼神看着女朋友她们公司早在半个月前就送的广州酒家月饼,所以为了不羡慕,今天用python+ppt带大家看看淘宝的月饼怎么样,呃呃,只看不买...顺便想想怎么提醒公司送!
Python与Excel之交
2021/09/28
1K0
Python实战 | 送亲戚,送长辈,月饼可视化大屏来帮忙!
中秋节,又称祭月节、月光诞、月夕、秋节、仲秋节、拜月节、月娘节、月亮节、团圆节等,是中国民间的传统节日。
AI科技大本营
2020/10/09
5310
Python实战 | 送亲戚,送长辈,月饼可视化大屏来帮忙!
Python+BI爬取3000条车厘子数据,发现了这些秘密
听说最近车厘子的价格突然猛跌,之前很多人梦寐以求的“车厘子自由”,现在都能实现了。其实车厘子的价格下降,主要原因是进口货运成本的大大降低,为了找到车厘子最佳的购买方式,我决定用python+BI进行数据分析。
大数据分析不是事儿
2021/02/23
4400
不仅仅是玩具,Python带你解读不一样的乐高
【导语】:今天我们来聊聊小朋友和大朋友们都爱不释手的乐高,Python技术部分请看第四部分。公众号后台,回复关键字“乐高”获取完整数据。
CDA数据分析师
2020/06/04
8890
不仅仅是玩具,Python带你解读不一样的乐高
我用 Python 分析了一波热卖年货,原来大家都在买这些东西?
今年不知道有多少小伙伴留在原地过年,虽然今年过年不能回老家,但这个年也得过,也得买年货,给家人长辈送礼。于是我出于好奇心的想法利用爬虫获取某宝数据,并结合 Python 数据分析和第三方可视化平台来分析一下大家过年都买了哪些东西,分析结果大屏如下:
程序员迪迪
2022/01/13
3540
Python告诉你:李子柒的螺蛳粉到底有多火?
【导语】:今天我们聊聊火遍全网的螺蛳粉,Python技术部分可以直接看第二部分。公众号后台,回复关键字“螺蛳粉”获取完整数据。
CDA数据分析师
2020/04/08
1.1K0
Python告诉你:李子柒的螺蛳粉到底有多火?
口红?剃须刀?Python告诉你,刚过去的520,大家都在送什么礼物
【导语】:今天我们来聊一聊刚过去的520,大家买得最多的都是什么?Python技术部分请看第二部分。
CDA数据分析师
2020/05/26
5140
口红?剃须刀?Python告诉你,刚过去的520,大家都在送什么礼物
数据分析 | 用数据告诉你中秋那家月饼最畅销
别不好意思,这是你该得的. 加我微信【hg_liuzl,备注:中秋活动中奖,并送上中奖截图找我兑奖】 另外中秋星球活动继续有效,截止到把中秋抽奖活动兑奖完毕。三天内不来找我兑奖的,中奖作废.
龙哥
2019/07/30
1.2K0
数据分析 | 用数据告诉你中秋那家月饼最畅销
火遍全网的自热火锅哪款最好吃?我们用Python告诉你!
随着自热食品越来越备受消费者的追捧,各种自热小火锅、自热米饭也成了妥妥的网红食品。我们今天就来聊一聊自热食品。
CDA数据分析师
2020/07/30
4350
9块9就能找个女朋友,你还在等什么?
备受关注的第七次人口普查数据近日公布。数据显示,我国男性比女性人口多出3000余万,从性别构成年龄段来看,从20岁到40岁这一主要婚育年龄段来看,男性比女性多出1700多万人。听到这个数据,不知道大家慌不慌,反正我是不慌,毕竟现在的年轻人都追求自由,要什么对象(假装不稀罕)。不得不说,近年来,中国人结婚少了、结婚晚了、离婚多了,社会、经济、环境压的我们喘不过气,而高婚育成本更像一座大山,我们在山前徘徊,踌躇等待。
数据STUDIO
2021/06/24
4830
淘宝数据分析实战:美食霸榜销量No.1的竟然是....
想必大家都喜欢囤货吧,小编购物车里全是加购的零食,闲来无事,就顺手爬了淘宝搜索美食出来的商品信息,简单做了个分析,借此案例给大家学习参考。
1480
2020/02/19
4980
python爬取淘宝全部『螺蛳粉』数据,看看你真的了解螺蛳粉吗?
上一篇文章(爬取淘宝热卖商品并可视化分析,看看大家都喜欢买什么!)爬取分析了淘宝的热卖商品,从分析来看『螺蛳粉』的销量巨高。因此这篇文章将爬取淘宝全部『螺蛳粉』商品数据,通过可视化分析淘宝螺蛳粉的一些秘密!
Python研究者
2021/03/05
8411
python爬取淘宝全部『螺蛳粉』数据,看看你真的了解螺蛳粉吗?
Python 爬取淘宝商品数据挖掘分析实战
作者 孙方辉 本文为CDA志愿者投稿作品,转载需授权 项目内容 本案例选择>> 商品类目:沙发; 数量:共100页 4400个商品; 筛选条件:天猫、销量从高到低、价格500元以上。 项目目的
CDA数据分析师
2018/04/08
2.8K1
Python 爬取淘宝商品数据挖掘分析实战
这个横行霸道的美食,也是中秋节的一大特色,我用Python爬取1546条数据带大家看看
中秋节除了月饼之外,还有一道美食也开始闯入人们的餐桌,这边是横行"霸道"的大闸蟹!
可以叫我才哥
2021/09/24
3050
爬取淘宝热卖商品并可视化分析,看看大家都喜欢买什么!
还有几天就过年了,大家都在囤年货(我也是),于是我就在淘宝上看看有什么好的,可以买一买。
Python研究者
2021/03/05
1.2K0
爬取淘宝热卖商品并可视化分析,看看大家都喜欢买什么!
推荐阅读
相关推荐
用python爬取4332条粽子数据进行分析,看哪个最受大家欢迎
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验