用 Python 爬取 4332 条数据,揭秘甜咸肉粽的江湖!

2020 年 6 月 20 日 CSDN

作者 | 朱小五
责编 | 屠敏
来源 | 凹凸数据

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

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

注:本文仅用于学习交流,禁止用于商业目的。


爬虫


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

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

爬虫过程如下图:

selenium自动化爬取(需要淘宝扫描登录一次)
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. 删除无发货地址的商品,并提取其中的省份

部分代码:

# 删除无发货地址的商品,并提取省份
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
整理后的数据

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

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

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版本:

import pyecharts

print(pyecharts.__version__)

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

扇形图

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

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

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对爬取得到的商品名称分词,生成词云。

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=[20200],
          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]

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]新农堂: 《你对粽子的力量可能一无所知》

【END】

更多精彩推荐

MATLAB 被禁点燃导火索,国产软件路在何方?

☞JS、Java、C 依然强势,Go、Kotlin、Python 成为潜力股,2020 开发者生态系统报告揭晓!

前字节跳动程序员 28 岁提前退休引热议,网友:我也想!

用 Python 训练自己的语音识别系统,这波操作稳了!

大数据 Spark :利用电影观看记录数据,进行电影推荐 | 原力计划

区块链如何解决食品安全问题?

你点的每个“在看”,我都认真当成了喜欢
登录查看更多
0

相关内容

淘宝网( Taobao,口号:淘!我喜欢。)是全球最大的网络零售商圈,致力打造全球领先网络售卖平台,由阿里巴巴集团在2003年5月10日投资创立。淘宝网现在业务跨越C2C(个人对个人)、B2C(商家对个人)、购物搜索三大部分。
【2020新书】实战R语言4,323页pdf
专知会员服务
100+阅读 · 2020年7月1日
【高能所】如何做好⼀份学术报告& 简单介绍LaTeX 的使用
干净的数据:数据清洗入门与实践,204页pdf
专知会员服务
161+阅读 · 2020年5月14日
【实用书】Python爬虫Web抓取数据,第二版,306页pdf
专知会员服务
117+阅读 · 2020年5月10日
【干货书】流畅Python,766页pdf,中英文版
专知会员服务
224+阅读 · 2020年3月22日
【资源】100+本免费数据科学书
专知会员服务
107+阅读 · 2020年3月17日
【经典书】Python数据数据分析第二版,541页pdf
专知会员服务
192+阅读 · 2020年3月12日
算法与数据结构Python,369页pdf
专知会员服务
161+阅读 · 2020年3月4日
一文看懂怎么用 Python 做数据分析
大数据技术
24+阅读 · 2019年5月5日
GitHub 热门:各大网站的 Python 爬虫登录汇总
机器学习算法与Python学习
9+阅读 · 2019年3月20日
抖音爬虫
专知
3+阅读 · 2019年2月11日
Python 爬虫实践:《战狼2》豆瓣影评分析
数据库开发
5+阅读 · 2018年3月19日
Python3爬虫之入门和正则表达式
全球人工智能
7+阅读 · 2017年10月9日
33款可用来抓数据的开源爬虫软件工具 (推荐收藏)
数据科学浅谈
7+阅读 · 2017年7月29日
Talking-Heads Attention
Arxiv
15+阅读 · 2020年3月5日
Arxiv
101+阅读 · 2020年3月4日
Arxiv
3+阅读 · 2019年8月26日
Relational recurrent neural networks
Arxiv
8+阅读 · 2018年6月28日
Arxiv
5+阅读 · 2018年6月4日
Arxiv
5+阅读 · 2015年9月14日
VIP会员
相关VIP内容
【2020新书】实战R语言4,323页pdf
专知会员服务
100+阅读 · 2020年7月1日
【高能所】如何做好⼀份学术报告& 简单介绍LaTeX 的使用
干净的数据:数据清洗入门与实践,204页pdf
专知会员服务
161+阅读 · 2020年5月14日
【实用书】Python爬虫Web抓取数据,第二版,306页pdf
专知会员服务
117+阅读 · 2020年5月10日
【干货书】流畅Python,766页pdf,中英文版
专知会员服务
224+阅读 · 2020年3月22日
【资源】100+本免费数据科学书
专知会员服务
107+阅读 · 2020年3月17日
【经典书】Python数据数据分析第二版,541页pdf
专知会员服务
192+阅读 · 2020年3月12日
算法与数据结构Python,369页pdf
专知会员服务
161+阅读 · 2020年3月4日
相关资讯
一文看懂怎么用 Python 做数据分析
大数据技术
24+阅读 · 2019年5月5日
GitHub 热门:各大网站的 Python 爬虫登录汇总
机器学习算法与Python学习
9+阅读 · 2019年3月20日
抖音爬虫
专知
3+阅读 · 2019年2月11日
Python 爬虫实践:《战狼2》豆瓣影评分析
数据库开发
5+阅读 · 2018年3月19日
Python3爬虫之入门和正则表达式
全球人工智能
7+阅读 · 2017年10月9日
33款可用来抓数据的开源爬虫软件工具 (推荐收藏)
数据科学浅谈
7+阅读 · 2017年7月29日
相关论文
Talking-Heads Attention
Arxiv
15+阅读 · 2020年3月5日
Arxiv
101+阅读 · 2020年3月4日
Arxiv
3+阅读 · 2019年8月26日
Relational recurrent neural networks
Arxiv
8+阅读 · 2018年6月28日
Arxiv
5+阅读 · 2018年6月4日
Arxiv
5+阅读 · 2015年9月14日
Top
微信扫码咨询专知VIP会员