充气娃娃什么感觉?Python告诉你
一、需求背景
在实际开发过程中,在我们动手开发之前,都是由产品经理为我们(测试、前端、后端、项目经理等)先讲解一下需求,我们了解了需求之后,才开始一起来讨论技术方案。
我们常常看到一些有关充气娃娃的表情包和图片或新闻,但是这种东西很少会像一些小视频一些相互交流,大家可能都是偷摸玩耍。所以猪哥相信其实大部分同学并没有亲身体验过充气娃娃到底是什么感觉(包括猪哥),所以猪哥很好奇究竟是什么一种体验?真的如传言中那样爽吗?
二、功能描述
基于很多人没有体验过充气娃娃是什么感觉,但是又很好奇,所以希望通过爬虫+数据分析的方式直观而真实的告诉大家(下图为成品图)。
三、技术方案
为了实现上面的需求以及功能,我们来讨论下具体的技术实现方案:
分析某东评论数据请求
使用requests库抓取某东的充气娃娃评论
使用词云做数据展示
四、技术实现
上篇文章中就给大家说过,今天我们以某东商品编号为:1263013576的商品为对象,进行数据分析,我们来看看详细的技术实现步骤吧!
本教程只为学习交流,不得用于商用获利,后果自负!
1.分析并获取评论接口的URL
第一步:打开某东的商品页,搜索你想研究的商品。
productPageComments:看这个名字就知道是产品页评论
2.爬取评论数据
拿到评论数据接口url之后,我们就可以开始写代码抓取数据了。一般我们会先尝试抓取一条数据,成功之后,我们再去分析如何实现大量抓取。
上一篇我们已经讲解了如何使用requests库发起http/s请求,我们来看看代码
大家在遇到这种情况时,回到浏览器的调试窗口,查看下浏览器发起的请求头,因为可能浏览器请求时携带了什么请求头参数而我们代码中没有。Referer和User-Agent,那我们先把他们加到代码的请求头中,再试试!
3.数据提取
我们对爬取的数据分析发现,此数据为jsonp跨域请求返回的json结果,所以我们只要把前面的fetchJSON_comment98vv4646(
和最后的)
去掉就拿到json数据了。
将json数据复制到json格式化工具中或者在Chrome浏览器调试窗口点击Preview
也可以看到,json数据中有一个key为comments
的值便是我们想要的评论数据。content
字段便是我们在页面看到的用户评价内容。content
字段提取并打印出来
4.数据保存
数据提取后我们需要将他们保存起来,一般保存数据的格式主要有:文件、数据库、内存这三大类。今天我们就将数据保存为txt文件格式,因为操作文件相对简单同时也能满足我们的后续数据分析的需求。
5.批量爬取
再完成一页数据爬取、提取、保存之后,我们来研究一下如何批量抓取?
做过web的同学可能知道,有一项功能是我们必须要做的,那便是分页。何为分页?为何要做分页?
我们在浏览很多网页的时候常常看到“下一页”这样的字眼,其实这就是使用了分页技术,因为向用户展示数据时不可能把所有的数据一次性展示,所以采用分页技术,一页一页的展示出来。
让我们再回到最开始的加载评论数据的url:
https://sclub.jd.com/comment/productPageComments.action?callback=fetchJSON_comment98vv4654&productId=1263013576&score=0&sortType=5&page=0&pageSize=10&isShadowSku=0&fold=1
我们可以看到链接里面有两个参数page=0&pageSize=10,page表示当前的页数,pageSize表示每页多少条,那这两个数据直接去数据库limit数据。
老司机一眼便可以看出这就是分页的参数,但是有同学会说:如果我是老司机还干嘛看你的文章?所以我教大家如何来找到这个分页参数。
回到某东的商品页,我们将评价页面拉到最底下,发现有分页的按钮,然后我们在调试窗口清空之前的请求记录。Headers
查看第二页请求数据的url
然后我们比较第一页评价与第二页评价的url有何区别
好了,知道分页规律之后,我们只要在每次请求时将page参数递增不就可以批量抓取了吗?我们来写代码吧!
对spider_comment方法增加入参page:
页数,然后在url中增加占位符,这样就可以动态修改url,爬取指定的页数。
增加一个batch_spider_comment方法,循环调用spider_comment方法,暂定爬取100页。
在batch_spider_comment方法的for循环中设置了一个随机的休眠时间,意在模拟用户浏览,防止因为爬取太频繁被封ip。
爬取完成之后检查成果
6.数据清洗
数据成功保存之后我们需要对数据进行分词清洗,对于分词我们使用著名的分词库jieba。
pip3 install jieba
7.生成词云
生成词云我们需要用到numpy
、matplotlib
、wordcloud
、Pillow
这几个库,大家先自行下载。matplotlib
库用于图像处理,wordcloud
库用于生成词云。
注意:font_path是选择字体的路径,如果不设置默认字体可能不支持中文,猪哥选择的是Mac系统自带的宋体字!
最终结果:
五、总结
因考虑新手的友好性,文章篇幅较长,详细的介绍了从需求到技术分析、爬取数据、清洗数据、最后的分析数据。我们来总结一下本篇文章学到的东西吧:
如何分析并找出加载数据的url
如何使用requests库的headers解决Referer和User-Agent反扒技术
如何找出分页参数实现批量爬取
设置一个爬虫间隔时间防止被封ip
数据的提取与保存到文件
使用jieba库对数据分词清洗
使用wordcloud生成指定形状的词云
这是一套完整的数据分析案例,希望大家能自己动手尝试,去探索更多有趣的案例,做个有趣的人~
项目地址(或点击阅读原文):https://github.com/pig6/jd_comment_spider
点击阅读原文可直达GitHub。
【完】
喜欢就点击“在看”
充气娃娃什么感觉?Python告诉你相关推荐
- 啥是佩奇?Python告诉你
作者 | 丁彦君 来源 | 恋习Python 昨天, 被<啥是佩奇>这支广告片刷屏了. 佩奇明明是个喜剧角色, 却看哭了所有人. ▼ <啥是佩奇>??? 快过年了 在农村爷爷给 ...
- 11月30日云栖精选夜读 | 用Python告诉你,现在的房租有多高?
杭州房租:钱塘两岸最高,奥体单间达4830元/月.不少人感叹:躲过了高房价,躲不过高房租,面对房租上涨,感觉身体被掏空.2018年的这个夏天,房租正在成为摧垮年轻人的"第一根稻草" ...
- python中circle是什么意思_啥是佩奇,让 Python 告诉你!
原标题:啥是佩奇,让 Python 告诉你! 本文转载自公众号 恋习Python 刚刚, 被<啥是佩奇>这支广告片刷屏了. 佩奇明明是个喜剧角色, 却看哭了所有人. ▼ <啥是佩奇& ...
- Python告诉你:为何年终奖多发一元,到手却少两千多?
作者 | shenzhongqiang 来源 | Python数据与分析(ID:ML_Python) 年终奖多发一元,到手却要少两千多,甚至更多.听到这个消息的时候,大家是不是觉得有点意外,意外之余还 ...
- python哪本好-在众多小说中,Python告诉你哪本小说好看
Python Python开发 Python语言 在众多小说中,Python告诉你哪本小说好看 前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及 ...
- python125免费教程,125 个视频成就千万级网红,Python 告诉你李子柒都在拍些什么?...
原标题:125 个视频成就千万级网红,Python 告诉你李子柒都在拍些什么? 作者 |Mika,数据 |真达 后期 |Mika.泽龙 责编 | 郭芮 来源 | CDA数据分析师 今天我们来聊聊把生活 ...
- 抖音很火的存钱计划,让python告诉你总共可以存到多少钱!
抖音上有个很火的存钱计划,说是第一天存1块钱,第二天存2块钱,第三天存3块钱.....依此类推存365天,总共可以存到多少钱,我们现在用python告诉你怎么做: #定个初始存入金额 money = ...
- python最难的地方_全国 41611 个景点,程序员用 Python 告诉你哪些地方最值得一游!...
原标题:全国 41611 个景点,程序员用 Python 告诉你哪些地方最值得一游! 经常听到别人说"世界那么大,我想去看看".在有机会走出国门之前,还是先把祖国走一圈吧.都知道中 ...
- 【邢不行|量化小讲堂系列44-实战篇】历年排名前10的基金,在第2年表现如何?Python告诉你答案
引言: 邢不行的系列帖子"量化小讲堂",通过实际案例教初学者使用python进行量化投资,了解行业研究方向,希望能对大家有帮助. [历史文章汇总]请点击此处 [必读文章]EOS期现 ...
- Python告诉你:股神巴菲特有坑我们吗?
引言: 邢不行的系列帖子"量化小讲堂",通过实际案例教初学者使用python进行量化投资,了解行业研究方向,希望能对大家有帮助. [历史文章汇总]请点击此处 [必读文章]EOS期现 ...
最新文章
- 区块链论文8,NIPoPoWs,非交互工作量证明之证明
- SQL Server 事务、异常和游标
- Vue-CLI + Webpack 搭建 Vue 项目最全分析
- Offer是否具有法律效力?
- 重识微信:花 8 小时列举微信功能
- 【Siddhi】Siddhi 如何表示布尔 Syntax error in SiddhiQL, mismatched input ‘boolean
- VMware vSphere 5.5的12个更新亮点(1)
- 拓端tecdat|R语言在地图上绘制月亮图、饼状图数据可视化果蝇基因种群
- 南阳理工学院计算机acm,南阳理工学院计算机学院ACM队成员获奖情况[荣誉记]
- Python 矩形法求sin(x)的定积分(完美实现)
- Android 点击按钮出现弹窗
- 阿里巴巴官方:明年今日马云将不再担任董事局主席
- Python爬虫之小猪短租房
- 目前主流的电脑操作系统
- 魔兽世界服务器同时在线人数,魔兽世界服务器人数,魔兽世界服务器人数查询...
- 如何在Mac上安全彻底的卸载软件?
- 平凡的世界,因你而美
- 哪几款车型?适合狮子座的车友?
- Tensorflow GPU并行运算
- bcd码 php,转载:BCD码
热门文章
- Oh my God, 连jQuery都放弃IE了!
- c语言中热河输入空格,热河 - 在线打字测试(dazi.kukuw.com)
- 写给30岁以下年轻人的话,人生的感悟,不是鸡汤,愿你们的人生少走弯路。
- 计算机基础 电子工业出版,电子工业出版社21世纪计算机基础教育系列教材2吴功宜吴英编着.ppt...
- rstp 转hls_EasyHLS实现将IPCamera摄像机的RTSP转HLS直播输出
- 计算机系学天体物理,中科院南京天文光学技术研究所专业介绍:天体物理
- SwiftUI 手势操作
- 亲身经历苹果手机变慢,换电池,被坑数回,难道真的是人穷的报应吗?
- Linux中bash文档翻译
- 记一次太阳神三国杀的编译