实现过程介绍

从网页爬取数据

思路

首先我们打开京东商城坚果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是这样的相关推荐

  1. python 爬取直播弹幕视频_调用斗鱼API爬取直播间弹幕信息(用户昵称及弹幕内容)...

    调用斗鱼API爬取直播间弹幕信息(用户昵称及弹幕内容) 查看<斗鱼弹幕服务器第三方接入协议v1.4.1>,了解斗鱼API的使用方法,即如何连接斗鱼弹幕服务器.维持连接及获取弹幕信息 Pyt ...

  2. 爬虫项目实战一:基于Scrapy+MongDB爬取并存储糗事百科用户信息

    爬虫项目实战一:基于Scrapy+MongDB爬取并存储糗事百科用户信息 一.前言 二.项目目标 三.项目的环境配置 四.项目实现 1. 创建QSBK项目 2. 实现Spider 1. 实现一页网页上 ...

  3. python爬取去哪网数据_用户观点:企查查数据爬取技术与Python 爬取企查查数据...

    主体数据来源是全国工商信用网但是每个省的工商系统都不同,要针对每个省的工商系统单独写爬虫每个省的验证码也不同,也要单独做.企查查的原理不是主动爬去数据,而是有人查询该企业时,如果自己的数据库没有该企业 ...

  4. Python 爬取“工商秘密”微博后,我做了这个“可视化大屏”(附gif图)

    公众号后台回复"图书",了解更多号主新书内容 作者:卖山楂啦prss 来源:数据分析与统计学之美 前言 微博作为我的日常软件之一,平时除了看看热搜.肖战(哈哈),我还会时不时看看秘 ...

  5. 爬取某东购买猪肉的用户评论,为生产经营提供了方向性参考

    本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理. 以下文章来源于乡村四十二,作者至善 背景 最近在调研电商平台黑猪肉市场需求情况,电商平台有效的用户 ...

  6. python是一种面向对象的高级语言_爬了世纪佳缘后发现了一个秘密,世纪佳缘找对象靠谱吗?...

    今天在知乎上看到一个关于[世纪佳缘找对象靠谱吗?]的讨论,其中关注的人有 1903,被浏览了 1940753 次,355 个回答中大多数都是不靠谱.用 Python 爬取世纪佳缘的数据是否能证明它的不 ...

  7. python爬虫爬微信数据可信吗_我用 Python 爬取微信好友,最后发现一个大秘密

    前言 你身处的环境是什么样,你就会成为什么样的人.现在人们日常生活基本上离不开微信,但微信不单单是一个即时通讯软件,微信更像是虚拟的现实世界.你所处的朋友圈是怎么样,慢慢你的思想也会变的怎么样.最近在 ...

  8. 爬了世纪佳缘后发现了一个秘密,世纪佳缘找对象靠谱吗?

    今天在知乎上看到一个关于[世纪佳缘找对象靠谱吗?]的讨论,其中关注的人有 1903,被浏览了 1940753 次,355 个回答中大多数都是不靠谱.用 Python 爬取世纪佳缘的数据是否能证明它的不 ...

  9. python新浪微博数据分析_Python 爬取新浪微博数据分析90后单身原因

    一.需求背景 今天逛微博的时候发现一个有趣的话题#90后单身原因TOP3# 七夕之际,一份针对全国90后青年婚恋观进行抽样调查公布了结果.结果显示,一线城市单身占比持续领先.90后单身原因TOP3:圈 ...

最新文章

  1. 一秒解决CentOS下service 功能 不能使用 bash: service: command not found
  2. 《周四橄榄球之夜》流媒体视频拆解:Twitch VS Amazon Prime
  3. vue中dom元素和组件的获取
  4. Linux:is not in the sudoers file
  5. Jmeter之Constant Timer与constant throughput timer的区别
  6. Windows10下安装原生TensorFlow GPU版
  7. java上下文的作用_Spring中的应用程序上下文有什么作用? - java
  8. platform驱动和pci驱动的区别
  9. npm install XXX 报错:error An unexpected error occurred:
  10. linux文件系统安全模型与()属性相关,《Linux系统安全.》.ppt
  11. odb 使用指南(三)持久化对象的处理
  12. Word生成图表(柱状图、线形图等,并附带表格展示数值)
  13. 高一计算机专业学期总结,高一计算机学期工作总结
  14. 引导滤波(guidedFilter)与边窗盒式滤波(sideWindowBoxFilter)的C++与OpenCV实现
  15. 2020年河南省对口升学计算机专业分数线,2020年河南省对口升学考试和录取
  16. 分享一波和黑客斗智斗勇的经历
  17. 《正在爆发的互联网革命》——30余位互联网大腕一致推荐,3.5亿网民必看!...
  18. Com port (1)
  19. 《HTML 参考手册》学习指南
  20. C语言已经自学完了,数电模电电路都还没学,学stm32会有阻碍吗

热门文章

  1. eul for 1.4.1 Mac中文版 菜单栏系统状态查看工具
  2. 在moss上自己总结了点小经验。。高手可以飘过 转贴
  3. AR Kit初步学习总结
  4. 面向对象程序设计__Task3_Calculator
  5. 我们都有病,创业真的容易上瘾。
  6. UI设计尺寸(实用)
  7. 配置一个vue-cli3.0项目
  8. 数据结构(主席树):COGS 2211. 谈笑风生
  9. idea springboot 打jar包 --- 小白教程
  10. java 计算器api_Java制作简易计算器day23-软件客栈