码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2019-08-16 23:08:20      阅读:112      评论:0      收藏:0      [点我收藏+]

标签:origin   jieba   数据库   数据   wordcloud   传递   自己   模拟   云图   

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

技术图片
 

按照软件设计流程来:

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

1.需求分析:

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

技术图片
 

2.功能描述

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

3.技术文档

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

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

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

4.详细设计

技术图片
 

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

技术图片
 

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

5.编码

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

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

技术图片
 

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

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

技术图片
 

发现了吗?

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

技术图片
 

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

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

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

技术图片
 

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

技术图片
 

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

技术图片
 

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

技术图片
 

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

技术图片
 

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

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

技术图片
 

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

技术图片
 

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

技术图片
 

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

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

技术图片
 

这里说明一下

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

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

技术图片
 

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

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

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

技术图片
 

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

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

技术图片
 

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

技术图片
 

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

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

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

标签:origin   jieba   数据库   数据   wordcloud   传递   自己   模拟   云图   

原文地址:https://www.cnblogs.com/qingdeng123/p/11366594.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!