充气娃娃?Python告诉你到底有多爽......

上某东的时候,突然给我弹了一个充气娃娃的广告,于是就点进去就看了一下评论,全是神评论啊。所以我就想着把大神们的评论们扒拉下来仔细瞅瞅,于是这篇文章就诞生了?,纯属学习啊,不要想入非非啊,还有,不喜勿喷!

image.png
 

按照软件设计流程来:

需求分析-功能描述-技术文档-详细设计-编码-测试-交付-验收-后期维护

1.需求分析:

首先我先找了某东最火娃娃,里面评论近乎7万条,这里面神评论一定不少。所以决定从这个里面扒拉我们想要获取的数据

image.png
 

2.功能描述

  1. 充气娃娃这种东西,一般大家都在网上见得多,所以玩起来到底感觉怎么样。大家有可能知道,但是我不知道?。所以我只能分析一下大伙的使用感受。这次我将获取到的数据统计以词云的方式呈现。这样呈现的数据比传统的统计图更直观且更有艺术感。
image.png
 

3.技术文档

1.使用requests获取某东上的所有评论;

2.使用jieba将获取到的评论切割成单个词语,为词云做铺垫;

3.使用wordcloud生成词云图用以展示数据。

4.详细设计

image.png
 

如上图所示,首先我们F12或者右键打开开发者模式,然后找到Network下面的All,然后随便复制一句评论在下面ctrl+F复制搜索。找到这句评论所在的位置。

image.png
 

找到评论的我所在位置之后,点击左边的Headers,如图上所示的Request URL就是我们所要爬取所有评论的link。

5.编码

找到评论所在的link之后,我们就可以上手coding了。评论有近七万条,每页只有十条评论,所以就是说有近七千多页。但是不要慌,我们先爬取一页数据看看,只要这一页成功了,剩下的页数问题都不大。

首先使用requests获取数据(requests的不会用的童鞋可自行百度哈)

image.png
 

但是,似乎,but没有拿到数据,什么鬼!

分析之后,确定是少了什么东西,首先我们来看看浏览器。

image.png
 

发现了吗?

就是少了这个Refer和UserAgent,回到代码继续完善。。。

image.png
 

可以看到接入Refer和UserAgent之后已经拿到了我们想要爬取的数据。

但是这个json格式的数据看起来怪怪的,怪在哪里呢?前面多了这些fetchJSON_comment98vv7990(,后面多了);

所以我们首先要去掉这些对我们无益的东西来拿到正确的json数据

image.png
 

通过改良,拿到了我们想要的数据。但是我们想要的只是评论啊,这里怎么还有好多评论之外的东西呢?我们返回浏览器继续查看

image.png
 

通过对比发现我们要的评论是在comments下面的content里面,按照这个逻辑,我们首先要进入到comments里面,然后在comments里面遍历出所有的content。

image.png
 

然后将数据保存我们命名的jd_comments.txt文件中。(本来获取到的数据是要放在数据库里面的,咱们在这里将它放入txt文档是为了后面词云的使用)

image.png
 

对比一下,看写入到file里面的内容与我们想要爬取的内容是否一致

image.png
 

接下来似乎单页内容的爬取已经大功告成了,现在我们举一反三来试试多页评论的爬取。

首先我们按照上面的步骤再次复制一段评论

image.png
 

然后通过同样的方法找出它的link对它们进行对比

image.png
 

对比发现除了它们的page不一样之外其余都是一样的。

image.png
 

也就是说它的分页是按照pagesize = 10 的每页十条记录和page = 0,1,2,3,。。。进行分页显示的。

每页十条记录显示是不变的,变的是不断递增的page,所以我们要把这个page设置为一个变量,让他循环增加。

image.png
 

这里说明一下

对get_spider_comments方法加入变量page,当我们指定page的值时,它就可以获取固定页面的评论。

在batch_spider_comments方法中sleep方法,用来模拟用户浏览,防止因为爬取太频繁导致ip被封。

image.png
 

首先我们爬取了100页的数据,可以看到爬取了984行。证明我们的多页爬取也是没有问题的。

为了更加直观方便的看出评论的内容,我们决定使用词云来进行展示。

首先需要我们对jieba和wordcloud进行了解,使用pip install jieba对jieba库进行安装。然后用jieba对获取到的评论进行分词。

image.png
 

然后使用pip install wordcloud再安装wordcloud。最后用generate方法生成词云图。

说明一下,默认生成的词云图是正方形的,但是我在这里引入了imageio的 imread方法 以获取原始图片ball.jpg的参数

image.png
 

然后使用mask=mask 传递形状参数,所以最后我们获取到的就是一张圆形的词云图

image.png
 

所以之后大家可以按照自己的意愿来设置图片的形状。

希望大家可以参考学习,共同进步!!

转载于:https://www.cnblogs.com/qingdeng123/p/11366594.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值