这两天北方快要冷死了,我在网易严选上看中了一件大棉袄,值不值得买?
我想用python来分析一波
今天,我们就爬取网易严选某大衣品牌评论情况,来看看大家对于颜色、尺码都是怎么选的?
目标获取
我们此次的目标数据有六个,颜色、尺码、评论时间、会员等级、点赞量和评论内容
最后通过数据可视化来直观的展示给选择困难症
让你轻松做出选择~
网页分析
我们F12打开浏览器开发者模式,可以看到我们要获取的数据都在其中
接下来我们找到网页请求链接来模拟浏览器请求获取数据
注意添加headers。
发送请求
网页分析完毕之后接下来发送请求
url = f'http://you.163.com/xhr/comment/listByItemByTag.json?__timestamp=1636785180888&itemId=3532002&tag=%E5%85%A8%E9%83%A8&size=20&page={page}&orderBy=0&oldItemTag=%E5%85%A8%E9%83%A8&oldItemOrderBy=0&tagChanged=0' headers = { 'Cookie': 'yx_from=web_search_baidu; yx_aui=ada226e7-929f-419c-af99-53ad3eda94f0; mail_psc_fingerprint=01caf6305f28d3e4b8cfe162559acaac; yx_s_device=92db99a-a0c8-22cd-47c3-61d5b24664; yx_but_id=c18807c330874f4aaae2799cd51cdf9fd04f970cabedddc6_v1_nl; P_INFO=18392144506|1636766426|1|yanxuan_web|00&99|null=zyQS1ZWw9NX5Xw50muitOHx0kkWJG3WT51-8azp0ZDa&wd=&eqid=ca2a415f0000e3c900000005618f20af; _ntes_nnid=f1c2812145357d2b883902c65c421256,1636769976319; yx_delete_cookie_flag=true; yx_stat_seesionId=ada226e7-929f-419c-af99-53ad3eda94f01636769983423; yx_stat_ypmList=; yx_show_painted_egg_shell=false; yx_new_user_modal_show=1; yx_page_key_list=http%3A//you.163.com/search%3Fkeyword%3D%25E6%25A3%2589%25E8%25A2%2584%25E5%25A5%25B3%26timestamp%3D1636769989980%26_stat_search%3Dhistory%26searchWordSource%3D5%26_stat_referer%3Dindex%23page%3D1%26sortType%3D0%26descSorted%3Dtrue%26categoryId%3D0%26matchType%3D0%2Chttp%3A//you.163.com/item/detail%3Fid%3D3991647%26_stat_area%3D1%26_stat_referer%3Dsearch%26_stat_query%3D%25E6%25A3%2589%25E8%25A2%2584%25E5%25A5%25B3%26_stat_count%3D169%26_stat_searchversion%3Dmmoe_model-1.1.0-1.3; yx_stat_seqList=v_315469b8cb%7Cv_f72eac7e53%3B-1%3Bv_0e93fce746%3Bc_6b9da68e5d%3Bv_315469b8cb%3B-1', 'Referer': 'http://you.163.com/item/detaierer=search&_stat_query=%E6%96%87%E8%83%B8&_stat_count=132&_stat_searchversion=dcn_model-1.1.0-1.3', 'User-Agent': 'Mozilla/5.0 (WindowHTML, like Gecko) Chrome/96.0.4664.9 Safari/537.36' } resp = requests.get(url, headers = headers) if resp.status_code == 200: comts_List = resp.json()['data']['commentList'] print(comts_List)
成功获取到数据,接下来我们要做的就是提取出我们要获取的六个数据
颜色、尺码、评论时间、会员等级、点赞量和评论内容提取如下:
for item in comts_List: # 颜色 colors = item['skuInfo'][0] # 尺码 size = item['skuInfo'][1] # 评论时间 times = item['createTime'] content_time = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(times/1000)) # 会员等级 memberLevel = item['memberLevel'] # 评论点赞 stars = item['star'] # 评论内容 content = item['content'] print(colors, size, content_time, memberLevel, stars, content) ''' 颜色:藏青无帽 尺码:M 2020-12-13 00:11:23 4 5 颜色很好搭衣服,衣服比较轻薄,保暖也OK,非常满意~~~ 颜色:黑色无帽 尺码:M 2021-01-16 11:08:59 2 5 性价比很高,滑滑软软的,不比波司登400的差,做工没问题,没有线头也没有味道,很满意,犹豫的可以下手了,用上券一百六十多买的 颜色:黑色无帽 尺码:M 2020-12-26 17:03:07 2 5 可以 比较轻薄 满意 颜色:粉色连帽 尺码:S 2019-11-11 23:10:51 3 5 衣服收到!非常不错,真的是轻盈合体,而且非常随身,总之是太好了! 颜色:黑色连帽 尺码:L 2019-11-10 06:01:12 1 5 衣服收到了,现在正好可以穿,轻薄暖和,值得拥有,严选的东西从来没叫我失望过。 颜色:黑色无帽 尺码:M 2019-11-26 17:47:00 1 5 轻便羽绒服不错,穿着非常舒适,天气冷了有时穿两件也不愿意穿其它厚重的衣服 颜色:藏青无帽 尺码:M 2020-12-11 12:32:16 5 5 衣服不错,太小了。 颜色:黑色无帽 尺码:S 2021-10-23 22:13:17 4 5 很棒,暖暖的,现在穿还有点热 颜色:藏青无帽 尺码:M 2021-08-19 17:21:03 6 5 好 颜色:藏青无帽 尺码:M 2020-12-25 16:27:10 4 5 一个月前后两件严选羽绒服,不用多说了吧 颜色:卡其无帽 尺码:S 2021-01-13 14:42:49 3 5 第三次购买了。这次是帮同事下单。继续~ 颜色:黑色无帽 尺码:M 2020-12-12 20:16:34 3 5 质量可以,轻盈舒适,相信严选! 颜色:粉色连帽 尺码:L 2020-10-16 09:03:03 4 5 虽然配送出了点问题,但严选的整体服务还是很不错的,问题处理很及时!产品也OK!给妈妈买的,老人很满意! 颜色:红色连帽 尺码:M 2021-08-20 08:59:04 3 5 手感很好,蓬松柔软,颜色无色差跟图片一样,喜欢的购买吧 颜色:黑色无帽 尺码:S 2021-11-10 18:01:39 1 5 好 颜色:藏青无帽 尺码:M 2021-09-14 10:39:14 3 5 非常棒,很喜欢,轻便简单易携带好收藏,还保暖 颜色:红色连帽 尺码:M 2021-09-08 09:52:49 5 5 大小合适,外出旅游带上。 颜色:藏青连帽 尺码:M 2021-09-07 14:49:21 4 5 真的是一件非常舒服轻巧的羽绒服 颜色:藏青连帽 尺码:L 2021-09-04 00:44:29 4 5 价廉物美,到货很速度,目前没有其他问题。需要还会回购,这么便宜的价钱等于白送了!价钱美丽!超级划算!性价比也很高!物流方面呢,卖家发货速度也很快的,服务也很到位,速度快~服务好!以前也买过这个,但是真心没有这次买的好,这次买的真心赚到了,哈哈! 颜色:红色连帽 尺码:L 2021-09-03 00:48:47 5 5 很好 '''
保存数据
我们将获取到的数据保存到excel中,一会还要做数据分析和可视化展示的。
ws = op.Workbook() wb = ws.create_sheet(index=0) wb.cell(row=1, column=1, value='颜色') wb.cell(row=1, column=2, value='尺码') wb.cell(row=1, column=3, value='评论时间') wb.cell(row=1, column=4, value='会员等级') wb.cell(row=1, column=5, value='评论点赞') wb.cell(row=1, column=6, value='评论内容') wb.cell(row=count, column=1, value=colors) wb.cell(row=count, column=2, value=size) wb.cell(row=count, column=3, value=content_time) wb.cell(row=count, column=4, value=memberLevel) wb.cell(row=count, column=5, value=stars) wb.cell(row=count, column=6, value=content) ws.save('网易严选大衣.xlsx')
部分数据展示如下:
数据清洗
接下来我们使用pandas对获取到的数据进行去重和去空等处理
还需要对颜色和尺码两列数据进行转换处理
# 读取数据 rcv_data = pd.read_excel('网易严选大衣.xlsx') # 去除'颜色:'字样 rcv_data.loc[:, '颜色1'] = rcv_data['颜色'].str.replace('颜色:', '') # 去除'尺码:'字样 rcv_data.loc[:, '尺码1'] = rcv_data['尺码'].str.replace('尺码:', '') # 存储数据 rcv_data.to_excel('网易严选大衣.xlsx') # 删除重复记录和缺失值 rcv_data = rcv_data.drop_duplicates() rcv_data = rcv_data.dropna() # 抽样展示 print(rcv_data.sample(5)) ''' 颜色 尺码 评论时间 会员等级 评论点赞 评论内容 颜色1 尺码1 299 颜色:卡其无帽 尺码:L 2019-11-21 17:47:33 4 5 给妈妈买的,穿起来很合身,非常轻薄舒适,也很暖和。 卡其无帽 L 1217 颜色:卡其连帽 尺码:XL 2019-11-15 11:19:12 4 5 喜欢,很暖和,颜色也很靓丽 卡其连帽 XL 896 颜色:粉色无帽 尺码:L 2019-11-26 22:38:45 2 5 买给女儿的,羽绒非常好,穿着舒适。 粉色无帽 L 1551 颜色:粉色连帽 尺码:XL 2019-11-05 09:53:28 5 5 物美价廉 粉色连帽 XL 1036 颜色:卡其无帽 尺码:S 2019-11-21 21:18:47 2 5 好 卡其无帽 S '''
词云展示
接下来就是用jieba、wordcloud来做好看的词云展示图。
c_title = rcv_data['评论内容'].tolist() # 观影评论词云图 wordlist = jieba.cut(''.join(c_title)) result = ' '.join(wordlist) pic = 'img.jpg' gen_stylecloud(text=result, icon_name='fas fa-tshirt', font_path='msyh.ttc', background_color='white', custom_stopwords=stop_words, output_name=pic, ) print('绘图成功!')
词频展示
我们找出评论中前十大高频词汇来做展示图
# 词频设置 all_words = [word for word in result.split(' ') if len(word) > 1 and word not in stop_words] wordcount = Counter(all_words).most_common(10) x1_data, y1_data = list(zip(*wordcount)) print(x1_data) print(y1_data) ''' ('不错', '非常', '满意', '喜欢', '质量', '衣服', '轻薄', '颜色', '严选', '保暖') (274, 236, 216, 205, 203, 156, 136, 128, 123, 119) '''
词频气泡图
词频饼图
合成看板大屏展示图
大衣尺码展示图
由图可以看出,L和M占比超过50%,大多小姐姐的身高都是在165-170之间的
评论热度排行分布图
下面看一下热度排名前三的评论:
好
很好
不错
大衣颜色分布图
黑色连帽和黑色无帽占榜前二,跟着小姐姐选就没错啦~
这就是今天要分享的内容,关注「GOGO数据」,每天带你了解更多有用的知识。
码字不易!你的「点赞」、「分享」、「在看」、「收藏」是对我最大的支持!