美文网首页Python学而时习之
充气娃娃到底有多爽?Python告诉你……

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

作者: 途途途途 | 来源:发表于2019-08-20 18:11 被阅读0次
    充气娃娃到底有多爽?Python告诉你……

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

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

    按照软件设计流程来:

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

    1.需求分析:

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

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

    2.功能描述

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

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

    3.技术文档

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

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

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

    4.详细设计

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

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

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

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

    5.编码

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

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

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

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

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

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

    发现了吗?

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    这里说明一下

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

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

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

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

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

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

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

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

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

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

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

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

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

    源码已上传至微信公众号 '神秘程序员007回复'女朋友'即可查看源码,  希望大家不断拥抱新的技术和变化,提升自己的核心技能,增强自身的不可替代性。一起拥抱高薪,不负2020!

    相关文章

      网友评论

        本文标题:充气娃娃到底有多爽?Python告诉你……

        本文链接:https://www.haomeiwen.com/subject/nocmsctx.html