Python 分析热卖年货,今年春节大家都在送啥?


作者 |?Cherich_sun
来源 | 杰哥的IT之旅
头图 | 下载于视觉中国
今年不知道有多少小伙伴留在原地过年,虽然今年过年不能回老家,但这个年也得过,也得买年货,给家人长辈送礼。于是我出于好奇心的想法利用爬虫获取某宝数据,并结合 Python 数据分析和第三方可视化平台来分析一下大家过年都买了哪些东西,分析结果如下:

上面使用清洗好的数据后用 finebi 第三方可视化工具完成的。接下来是用 Python 的实现过程,对于本文的叙述,主要分为以下五步:
分析思路 爬虫部分 数据清洗 数据可视化及分析 结论与建议
一、分析思路
品类销量的 TOP 10 有哪些?(表格或者横向条形图) 热门(出现次数最多)品类展示;(词云)
店铺销量最高的 TOP 10 有哪些?(条形图) 结合品类做联动,比如点坚果,对应展示销量排名的店铺;(联动,利用三方工具)
二、爬取数据
pip?install?selenium

#?coding=utf8
import?re
from?selenium.webdriver.chrome.options?import?Options
from?selenium?import?webdriver
import?time
import?csv
#?搜索商品,获取商品页码
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
#?获取数据
def?get_data():
????#?通过页面分析发现:所有的信息都在items节点下
????items?=?browser.find_elements_by_xpath('//div[@class="items"]/div[@class="item?J_MouserOnverReq??"]')
????for?item?in?items:
????????#?参数信息
????????pro_desc?=?item.find_element_by_xpath('.//div[@class="row?row-2?title"]/a').text
????????#?价格
????????pro_price?=?item.find_element_by_xpath('.//strong').text
????????#?付款人数
????????buy_num?=?item.find_element_by_xpath('.//div[@class="deal-cnt"]').text
????????#?旗舰店
????????shop?=?item.find_element_by_xpath('.//div[@class="shop"]/a').text
????????#?发货地
????????address?=?item.find_element_by_xpath('.//div[@class="location"]').text
????????#?print(pro_desc,?pro_price,?buy_num,?shop,?address)
????????with?open('{}.csv'.format(key_word),?mode='a',?newline='',?encoding='utf-8-sig')?as?f:
????????????csv_writer?=?csv.writer(f,?delimiter=',')
????????????csv_writer.writerow([pro_desc,?pro_price,?buy_num,?shop,?address])
def?main():
????browser.get('https://www.taobao.com/')
????page?=?search_product(key_word)
????print(page)
????get_data()
????page_num?=?1
????while?int(page)?!=?page_num:
????????print("*"?*?100)
????????print("正在爬取第{}页".format(page_num?+?1))
????????browser.get('https://s.taobao.com/search?q={}&s={}'.format(key_word,?page_num?*?44))
????????browser.implicitly_wait(25)
????????get_data()
????????page_num?+=?1
????print("数据爬取完毕!")
if?__name__?==?'__main__':
????key_word?=?input("请输入你要搜索的商品:")
????option?=?Options()
????browser?=?webdriver.Chrome(chrome_options=option,
???????????????????????????????executable_path=r"C:\Users\cherich\AppData\Local\Google\Chrome\Application\chromedriver.exe")
????main()

三、数据清洗
四、数据可视化及分析
import?pandas?as?pd
import?matplotlib?as?mpl
mpl.rcParams['font.family']?=?'SimHei'
from?wordcloud?import?WordCloud
from?ast?import?literal_eval
import?matplotlib.pyplot?as?plt
datas?=?pd.read_csv('./年货.csv',encoding='gbk')
datas

li?=?[]
for?each?in?datas['关键词'].values:
????new_list?=?str(each).split(',')
????li.extend(new_list)
def?func_pd(words):
????count_result?=?pd.Series(words).value_counts()
????return?count_result.to_dict()
frequencies?=?func_pd(li)
frequencies.pop('其他')
plt.figure(figsize?=?(10,4),dpi=80)
wordcloud?=?WordCloud(font_path="STSONG.TTF",background_color='white',?width=700,height=350).fit_words(frequencies)
plt.imshow(wordcloud)
plt.axis("off")
plt.show()

#?plt.pie(x,lables,autopct,shadow,startangle,colors,explode)
food_type?=?datas.groupby('价格区间').size()
plt.figure(figsize=(8,4),dpi=80)
explodes=?[0,0,0,0,0.2,0.1]
size?=?0.3
plt.pie(food_type,?radius=1,labels=food_type.index,?autopct='%.2f%%',?colors=['#F4A460','#D2691E','#CDCD00','#FFD700','#EEE5DE'],
???????wedgeprops=dict(width=size,?edgecolor='w'))
plt.title('年货价格区间占比情况',fontsize=18)
plt.legend(food_type.index,bbox_to_anchor=(1.5,?1.0))
plt.show()

data?=?datas.groupby(by='店铺名')['销量'].sum().sort_values(ascending=False).head(10)
plt.figure(figsize?=?(10,4),dpi=80)
plt.ylabel('销量')
plt.title('年货销量前十名店铺',fontsize=18)
colors?=?['#F4A460','#D2691E','#CDCD00','#EEE5DE',?'#EEB4B4',?'#FFA07A',?'#FFD700']
plt.bar(data.index,data.values,?color=colors)
plt.xticks(rotation=45)
plt.show()

foods?=?datas.groupby(by='类别')['销量'].sum().sort_values(ascending=False).head(10)
foods.sort_values(ascending=True,inplace=True)
plt.figure(figsize?=?(10,4),dpi=80)
plt.xlabel('销量')
plt.title('年货推荐购买排行榜',fontsize=18)
colors?=?['#F4A460','#D2691E','#CDCD00','#CD96CD','#EEE5DE',?'#EEB4B4',?'#FFA07A',?'#FFD700']
plt.barh(foods.index,foods.values,?color=colors,height=1)
plt.show()

结论与建议

福 利
CSDN给大家发压岁钱啦!
2月4日到2月11日每天上午11点
价值198元的芒果TV年卡,价值99元的CSDN月卡!现金红包,CSDN电子书月卡等奖品大放送!百分百中奖!
更多精彩推荐
?爬了20W+条猫咪交易数据,它不愧是人类团宠
?英超引入 AI 球探,寻找下一个足球巨星
?三年投 1000 亿,达摩院何以仗剑走天涯?
?2021年浅谈多任务学习
点分享 点收藏 点点赞 点在看
关注公众号:拾黑(shiheibook)了解更多
[广告]赞助链接:
四季很好,只要有你,文娱排行榜:https://www.yaopaiming.com/
让资讯触达的更精准有趣:https://www.0xu.cn/
关注网络尖刀微信公众号随时掌握互联网精彩
赞助链接
排名
热点
搜索指数
- 1 中共中央召开党外人士座谈会 7904424
- 2 日本附近海域发生7.5级地震 7807969
- 3 日本发布警报:预计将出现最高3米海啸 7712530
- 4 全国首艘氢电拖轮作业亮点多 7617696
- 5 课本上明太祖画像换了 7522050
- 6 中国游客遇日本地震:连滚带爬躲厕所 7427936
- 7 银行网点正消失:今年超9000家关停 7330715
- 8 日本地震当地居民拍下自家书柜倒塌 7238503
- 9 亚洲最大“清道夫”落户中国洋浦港 7143525
- 10 “人造太阳”何以照进现实 7045285











AI100
