文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

爬了4332条淘宝数据,看看1780元的粽子长啥样?

2024-12-11 20:30

关注

[[331330]]

 

图片来自 Pexels

1.爬虫

爬取淘宝数据,本次采用的方法是:Selenium 控制 Chrome 浏览器自动化操作。

其实我们还可以利用 Ajax 接口来构造链接,但是非常繁琐(包含加密秘钥等),直接使用 Selenium 来模拟浏览器会省去很多事情。

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

最常见的问题是 chromedriver 驱动与谷歌浏览器的版本不匹配,很容易就可以解决。

接下来,我们就开始利用 selenium 抓取淘宝商品,并使用 Xpath 解析得到商品名、价格、付款人数、店铺名、发货地址信息,最后将数据保存在本地。

爬虫过程如下图:

 

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

  1. from selenium import webdriver 
  2.  
  3. # 搜索商品,获取商品页码 
  4. def search_product(key_word): 
  5.     # 定位输入框 
  6.     browser.find_element_by_id("q").send_keys(key_word) 
  7.     # 定义点击按钮,并点击 
  8.     browser.find_element_by_class_name('btn-search').click() 
  9.     # 最大化窗口:为了方便我们扫码 
  10.     browser.maximize_window() 
  11.     # 等待15秒,给足时间我们扫码 
  12.     time.sleep(15) 
  13.     # 定位这个“页码”,获取“共100页这个文本” 
  14.     page_info = browser.find_element_by_xpath('//div[@class="total"]').text 
  15.     # 需要注意的是:findall()返回的是一个列表,虽然此时只有一个元素它也是一个列表。 
  16.     page = re.findall("(\d+)",page_info)[0] 
  17.     return page 

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

2.数据整理

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

 

整理前的数据

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

部分代码:

  1. # 删除无发货地址的商品,并提取省份 
  2. df = df[df['发货地址'].notna()] 
  3. df['省份'] = df['发货地址'].str.split(' ').apply(lambda x:x[0]) 
  4.  
  5. # 删除多余的列 
  6. df.drop(['付款人数''发货地址''num''unit'], axis=1, inplace=True
  7.  
  8. # 重置索引 
  9. df = df.reset_index(drop=True
  10. df.head(10)  

 

 

整理后的数据

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

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

  1. df1 = df.sort_values(by="价格", axis=0, ascending=False
  2. df1.iloc[:5,:] 

 

价格 TOP5 的粽子

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

 

想尝尝!

 

3.数据可视化

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

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

  1. import pyecharts 
  2.  
  3. print(pyecharts.__version__) 

扇形图

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

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

  1. def price_range(x): #按照淘宝推荐划分价格区间 
  2.     if x <= 22: 
  3.         return '22元以下' 
  4.     elif x <= 115: 
  5.         return '22-115元' 
  6.     elif x <= 633: 
  7.         return '115-633元' 
  8.     else
  9.         return '633元以上' 

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

 

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

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

词云图

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

  1. from pyecharts.charts import WordCloud 
  2. from pyecharts.globals import SymbolType 
  3.  
  4. # 词云图 
  5. word1 = WordCloud(init_opts=opts.InitOpts(width='1350px', height='750px')) 
  6. word1.add("", [*zip(key_words.words, key_words.num)], 
  7.           word_size_range=[20, 200], 
  8.           shape=SymbolType.DIAMOND) 
  9. word1.set_global_opts(title_opts=opts.TitleOpts('粽子商品名称词云图'), 
  10.                       toolbox_opts=opts.ToolboxOpts()) 
  11. word1.render("粽子商品名称词云图.html"

 

粽子商品名称词云图

硕大的粽子周围环绕着几个突出的关键词:礼盒装、鲜肉、蛋黄、嘉兴、豆沙、端午节。

 

除去端午节相关的词汇,我们通过关键词大小似乎就知道几种口味的受欢迎情况。

查阅资料对比一下,还真是大体一致。心疼我枣粽。至于嘉兴这个地名,我们后文会继续提到。

条形图

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

 

粽子商品销量 Top10

五芳斋共 4 款入围,其中一款礼盒装达到了 100万+ 的销量,应该比这个还多(参见微信的 10w+)。真真老老紧随其后,3 款粽子进入 TOP10。

其余的品牌还有稻香村和知味观,额,第九名是卖粽叶的,看来自己包粽子的需求也是蛮大的嘛。

 

粽子店铺销量 Top10

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

经过查阅,五芳斋,真真老老,都为嘉兴的粽子两大品牌,那难怪嘉兴在词云图里那么突出。

嘉兴属于浙江省,销量冠亚军都在这里,那浙江岂不是占比很大。还真是这样。

地图

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

  1. from pyecharts.charts import Map  
  2.  
  3. # 计算销量 
  4. province_num = df.groupby('省份')['销量'].sum().sort_values(ascending=False)  
  5.  
  6. # 绘制地图 
  7. map1 = Map(init_opts=opts.InitOpts(width='1350px', height='750px')) 
  8. map1.add("", [list(z) for z in zip(province_num.index.tolist(), province_num.values.tolist())], 
  9.          maptype='china' 
  10.         )  
  11. map1.set_global_opts(title_opts=opts.TitleOpts(title='各省份粽子销量分布'), 
  12.                      visualmap_opts=opts.VisualMapOpts(max_=300000), 
  13.                      toolbox_opts=opts.ToolboxOpts() 
  14.                     ) 
  15. map1.render("各省份粽子销量分布.html"

 

各省份粽子销量分布

这个销量占比差异真的是太大了。可以说中国粽子看浙江,浙江粽子看嘉兴。(通过计算发货地址为浙江的粽子销量占比 70.6%,而嘉兴占浙江的 87.4%)

[[331332]]

 

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

4.小结

粽子自古以来就代表着纪念和美好的祝愿,而在这个并不安稳的 2020,端午的粽子更多了一些祈愿国泰民安,顺利度过阴霾的意义。

[[331333]]

 

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

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

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

作者:朱小五

编辑:陶家龙

出处:转载自微信公众号凹凸数据(ID:alltodata)

 

来源:凹凸数据内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯