爬取了3W 用户评价后发现用户眼中的坚果3是这样的
实现过程介绍
从网页爬取数据
思路
首先我们打开京东商城坚果3 的购买页面:
然后按F12进入开发者控制台(审查元素):
发现什么都没有,不要紧,点开评论区,你就会发现控制台出现类似这些信息:
控制台从刚才的没有信息到现在获取到当前信息,唯一的变化就是你打开了评论,所以网页返回的评论区内容一定在当前控制台的某个位置,从Name字段一个一个分析,就可以发现很明显的一行:
很明显这里就是我们需要的评论区数据,然后仔细分析其对应的Headers,就会发现我们获取数据需要的基本信息:
然后点开preview,就会发现返回数据转化为json格式后的内容:
进一步打开Response,看到网页返回的原始数据:
可以看到,网页返回的原始数据是用一个fetchJSON_comment98vv1587包裹着的json字符串,到这里,我们的思路就很清晰了:
首先用URL和对应的Query String
Parameters模仿网页发送请求,收到的Response将会是一份由fetchJSON_comment98vv1587()包裹着的包含json数据的String,我们用正则表达式将json数据提取出来,然后对json数据进行解析并获取想要字段的数据即可。
代码实现
首先根据网页控制台的信息定义相关必要的变量:
url=‘https://club.jd.com/comment/productPageComments.action’
QueryStringParameters={ 'callback':'fetchJSON_comment98vv1587','productId':'7029545','score':0,'sortType':5,'page':0,'pageSize':10,'isShadowSku':0,'fold':1 }
需要注意的是这里的url并不是直接将控制台显示的url全部拿过来,而是只要其前一部分,因为如果用控制台上的url,则只能获取到当前页面的评论,我们想要获取全部的评论,所以必须动态变化url,这里我们将url分为两部分写,这样方便后面调整page以获取不同页面的评论。
然后实现爬取数据的逻辑代码:
hotcomments = []
while(True):
t=s.get(url,params=data).text #模拟网页发送请求并接收返回数据
try:t=re.search(r'(?<=fetchJSON_comment98vv1587\().*(?=\);)',t).group(0)#使用正则表达式匹配‘fetchJSON_comment98vv1587’except Exception as e:breakj=json.loads(t) #解析jsoncommentSummary=j['comments']flag=0for comment in commentSummary:flag=1num=num+1item = {'content': comment['content'] ,'nickname': comment['nickname'],'score': comment['score'],'creationTime':comment['creationTime'],'productColor':comment['productColor']}hotcomments.append(item)if flag==0:breakdata['page']+=1 #改变page字段,下一次循环爬取下一页评论
当以上当以上代码执行完成之后就可以将所有评论信息放在 hotcomments中,然后就可以从中拿取数据进行分析了。
使用Bar进行各项指标柱状图可视化
三种不同颜色评论数量所占百分比
a= productColor.count(u'碳黑色')
b=productColor.count(u'酒红色')
c=productColor.count(u'浅金色')
d=float(a+b+c)
a=float(a/d)
b=float(b/d)
c=float(c/d)ds = tablib.Dataset()
ds.headers = ['颜色', '评论数']ds.append(['碳黑色',a])
ds.append(['酒红色', b])
ds.append(['浅金色', c])bar = Bar('颜色')
bar.add('评论数量(%)', ds.get_col(0), ds.get_col(1))
bar.render('color_bar.html')
从9号到26号单天评价数量所占百分比
ds2 = tablib.Dataset()
ds2.headers = ['评价时间', '评论数']
f=0.0
for i in range(9,27):f=f+creationTime.count(i)for i in range(9,27):ds2.append([str(i), creationTime.count(i)/f])bar2 = Bar('评价时间(购买时间)')
bar2.add('评论数量(%)', ds2.get_col(0), ds2.get_col(1))
bar2.render('time_bar.html')
不同评分所占百分比
ds3 = tablib.Dataset()
ds3.headers = ['评分', '评论数']
e=0.0
for i in range(0,6):j=5-ie+=score.count(j)
for i in range(0,6):j=5-ids3.append([str(j), score.count(j)/e])bar3 = Bar('评分')
bar3.add('评论数量(%)', ds3.get_col(0), ds3.get_col(1))
bar3.render('score_bar.html')
使用WordCloud进行评论词云可视化
content_text = " ".join(content_list)
bg_pic = imread('../WoMen_EasonChen/eason2.png')
wordcloud = WordCloud(mask=bg_pic,font_path='../Font/SourceHanSansSC-Heavy.otf',background_color='white',max_words=200).generate(content_text)
plt.figure()
plt.imshow(wordcloud,interpolation='bilinear')
plt.axis('off')
plt.show()
可视化结果
从图中可以看出,大部分用户比较喜欢碳黑色(74.38%),购买浅金色的用户最少,约占5%
可以看到95%的用户都给出了5分好评
最后看一下词云显示的内容
在给一张:
后记
坚果3刚发布的时候在网上可以看到很多人在黑他,罗老师也毫不客气地表示“拉黑”这些锤黑,本人不是锤粉也不是锤黑,只是觉得中国像罗老师这样天生骄傲的企业家不多了,就像罗振宇老师说的希望罗永浩成功那样,我也希望罗老师成功,因为中国需要这么一个天生骄傲的企业家,希望罗老师会是下一个乔布斯甚至超越乔布斯,期待锤子科技515可以创造传奇。
爬取了3W 用户评价后发现用户眼中的坚果3是这样的相关推荐
- python 爬取直播弹幕视频_调用斗鱼API爬取直播间弹幕信息(用户昵称及弹幕内容)...
调用斗鱼API爬取直播间弹幕信息(用户昵称及弹幕内容) 查看<斗鱼弹幕服务器第三方接入协议v1.4.1>,了解斗鱼API的使用方法,即如何连接斗鱼弹幕服务器.维持连接及获取弹幕信息 Pyt ...
- 爬虫项目实战一:基于Scrapy+MongDB爬取并存储糗事百科用户信息
爬虫项目实战一:基于Scrapy+MongDB爬取并存储糗事百科用户信息 一.前言 二.项目目标 三.项目的环境配置 四.项目实现 1. 创建QSBK项目 2. 实现Spider 1. 实现一页网页上 ...
- python爬取去哪网数据_用户观点:企查查数据爬取技术与Python 爬取企查查数据...
主体数据来源是全国工商信用网但是每个省的工商系统都不同,要针对每个省的工商系统单独写爬虫每个省的验证码也不同,也要单独做.企查查的原理不是主动爬去数据,而是有人查询该企业时,如果自己的数据库没有该企业 ...
- Python 爬取“工商秘密”微博后,我做了这个“可视化大屏”(附gif图)
公众号后台回复"图书",了解更多号主新书内容 作者:卖山楂啦prss 来源:数据分析与统计学之美 前言 微博作为我的日常软件之一,平时除了看看热搜.肖战(哈哈),我还会时不时看看秘 ...
- 爬取某东购买猪肉的用户评论,为生产经营提供了方向性参考
本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理. 以下文章来源于乡村四十二,作者至善 背景 最近在调研电商平台黑猪肉市场需求情况,电商平台有效的用户 ...
- python是一种面向对象的高级语言_爬了世纪佳缘后发现了一个秘密,世纪佳缘找对象靠谱吗?...
今天在知乎上看到一个关于[世纪佳缘找对象靠谱吗?]的讨论,其中关注的人有 1903,被浏览了 1940753 次,355 个回答中大多数都是不靠谱.用 Python 爬取世纪佳缘的数据是否能证明它的不 ...
- python爬虫爬微信数据可信吗_我用 Python 爬取微信好友,最后发现一个大秘密
前言 你身处的环境是什么样,你就会成为什么样的人.现在人们日常生活基本上离不开微信,但微信不单单是一个即时通讯软件,微信更像是虚拟的现实世界.你所处的朋友圈是怎么样,慢慢你的思想也会变的怎么样.最近在 ...
- 爬了世纪佳缘后发现了一个秘密,世纪佳缘找对象靠谱吗?
今天在知乎上看到一个关于[世纪佳缘找对象靠谱吗?]的讨论,其中关注的人有 1903,被浏览了 1940753 次,355 个回答中大多数都是不靠谱.用 Python 爬取世纪佳缘的数据是否能证明它的不 ...
- python新浪微博数据分析_Python 爬取新浪微博数据分析90后单身原因
一.需求背景 今天逛微博的时候发现一个有趣的话题#90后单身原因TOP3# 七夕之际,一份针对全国90后青年婚恋观进行抽样调查公布了结果.结果显示,一线城市单身占比持续领先.90后单身原因TOP3:圈 ...
最新文章
- 一秒解决CentOS下service 功能 不能使用 bash: service: command not found
- 《周四橄榄球之夜》流媒体视频拆解:Twitch VS Amazon Prime
- vue中dom元素和组件的获取
- Linux:is not in the sudoers file
- Jmeter之Constant Timer与constant throughput timer的区别
- Windows10下安装原生TensorFlow GPU版
- java上下文的作用_Spring中的应用程序上下文有什么作用? - java
- platform驱动和pci驱动的区别
- npm install XXX 报错:error An unexpected error occurred:
- linux文件系统安全模型与()属性相关,《Linux系统安全.》.ppt
- odb 使用指南(三)持久化对象的处理
- Word生成图表(柱状图、线形图等,并附带表格展示数值)
- 高一计算机专业学期总结,高一计算机学期工作总结
- 引导滤波(guidedFilter)与边窗盒式滤波(sideWindowBoxFilter)的C++与OpenCV实现
- 2020年河南省对口升学计算机专业分数线,2020年河南省对口升学考试和录取
- 分享一波和黑客斗智斗勇的经历
- 《正在爆发的互联网革命》——30余位互联网大腕一致推荐,3.5亿网民必看!...
- Com port (1)
- 《HTML 参考手册》学习指南
- C语言已经自学完了,数电模电电路都还没学,学stm32会有阻碍吗
热门文章
- eul for 1.4.1 Mac中文版 菜单栏系统状态查看工具
- 在moss上自己总结了点小经验。。高手可以飘过 转贴
- AR Kit初步学习总结
- 面向对象程序设计__Task3_Calculator
- 我们都有病,创业真的容易上瘾。
- UI设计尺寸(实用)
- 配置一个vue-cli3.0项目
- 数据结构(主席树):COGS 2211. 谈笑风生
- idea springboot 打jar包 --- 小白教程
- java 计算器api_Java制作简易计算器day23-软件客栈