久久国产精品视频在线
栏目分类
精品福利你的位置:久久国产精品视频在线 > 精品福利 > 充气娃娃什么感觉?Python告诉你!这个方法我只告诉你哦!
充气娃娃什么感觉?Python告诉你!这个方法我只告诉你哦!

2021-10-23 12:24    点击次数:190

  

在上一期中,我介绍了请求库的基本信息,并使用请求库对某东方的产品页面进行了抓取。收到很多同学的反馈,说很期待猪哥的更新,猪哥很开心。今天,我想给大家带来一场精彩的比赛!

一、需求背景。

在实际开发过程中,在我们开始开发之前,产品经理会为我们讲解需求(测试、前端、后端、项目经理等)。).了解需求后,我们将一起讨论技术解决方案。

我们自己实现一些小功能的时候,也需要讨论需求,也就是告诉别人我们为什么要做这个事情。或者我们想用这个产品解决什么问题。

我们经常会看到一些关于充气娃娃的表情包和图片或者新闻,但是这种东西很少像一些小视频那样互相交流,大家可能都在偷偷摸摸的玩。所以猪哥认为,其实大部分同学都没有亲身体验过充气娃娃的真实感受(包括猪哥),所以猪哥很好奇这到底是一种怎样的体验。真的像传言的那么酷吗?

二.功能描述。

因为很多人没有体验过充气娃娃的感觉,但是很好奇,所以希望通过爬虫+数据分析的方式直观真实的告诉大家(下图为成品)。

三.技术方案

为了实现上述需求和功能,我们来讨论一下具体的技术实现方案:

分析某东评论数据请求使用requests库抓取某东的充气娃娃评论使用词云做数据展示

四.技术实现。

正如我在上一篇文章中告诉你的,今天,我们分析一个序列号为1263013576的商品的数据。下面我们来看看详细的技术实现步骤!

本教程只为学习交流,不得用于商用获利,后果自负!如有侵权或者对任何公司或个人造成不利影响,请告知删除

1.分析获取评论界面的URL。

第一步:打开某东的产品页面,搜索想要学习的产品。

第二步:我们右键点击页面,选择Check(或F12)调出浏览器的调试窗口。

第三步:调出浏览器后,点击评论按钮加载数据,然后点击网络查看数据。

步骤4:找到加载评论数据的请求url。我们可以在注释中使用一个段落,然后在调试窗口中搜索。

经过上面4步分析,我们就拿到了京东评论数据的接口:sclub.jd.com/comment/productPageComments.action?callback=fetchJSON_comment98vv4654&productId=1263013576&score=0&sortType=5&page=0&pageSize=10&isShadowSku=0&fold=1经过以上四步分析,我们得到了JD的界面。COM的评论数据:sclub.jd.com/comment/productPageComments.action?.回调= fetchJSON _ comment 98v v 4654 & productId = 1263013576 & score = 0 & sort type = 5 & page = 0 & page size = 10 & isShadowSku = 0 & fold = 1

productPageComments:看这个名字就知道是产品页评论

2.对评论数据进行爬网。

获得注释数据接口url后,我们可以开始编写代码来抓取数据。一般我们会先尝试抓取一条数据,成功后再分析如何实现大量抓取。

上次,我们解释了如何使用请求库来发起http/s请求。让我们看看代码。

但是打印结果中的数据是空?为什么浏览器请求成功,我们的代码却不能请求数据?我们遇到反攀爬了吗?如何解决这种情况?

遇到这种情况,回到浏览器的调试窗口,检查浏览器发起的请求头,因为有可能浏览器在请求的时候携带了一些请求头参数,我们的代码中没有。

果不其然,我们在浏览器头中看到了两个请求头,Referer和User-Agent,所以让我们将它们添加到代码的请求头中,然后重试!

3.数据提取。

分析抓取的数据后,我们发现这个数据是jsonp跨域请求返回的json结果,所以我们只需要移除前面的fetchjson_comment98vv4646(也是最后一个)就可以得到json数据。

将json数据复制到json格式化工具中或者在Chrome浏览器调试窗口中点击Preview,可以看到json数据中有一个以key为注释的值,这就是我们想要的注释数据。

分析评论值后,我们发现它是一个有多项数据的列表,列表中的每一项都是每个评论对象,包括评论内容、时间、id、评价来源等信息,内容字段是我们在页面上看到的用户评价内容。

然后我们提取并打印出每个评估对象的内容字段,代码为。

4.数据保存。

提取数据后,我们需要保存它们。一般来说,保存数据主要有三种格式:文件、数据库和内存。今天我们将数据保存为txt文件格式,因为操作文件比较简单,也能满足我们后续数据分析的需要。

然后我们检查生成文件的内容是否正确。

5.分批爬行。

在完成一页数据的抓取、提取和保存后,让我们研究一下如何批量抓取。

做过网页的同学可能都知道,有一个功能是我们必须要做的,那就是分页。什么是分页?为什么要做分页?

我们在浏览很多网页的时候常常看到“下一页”这样的字眼,其实这就是使用了分页技术,因为向用户展示数据时不可能把所有的数据一次性展示,所以采用分页技术,一页一页的展示出来。

让我们回到加载评论数据的初始url:

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。页面表示当前的页数,页面大小表示每页的页数。然后这两个数据直接去数据库限制数据。

老司机一眼就能看出这是分页的参数,但有些同学会说:如果我是老司机,为什么要看你的文章?所以我教你如何找到这个分页参数。

回到某东的商品页面,我们把测评页面拉到最下面,发现有一个分页按钮。然后我们在调试窗口中清除了空之前的请求记录。

清除空之前的请求记录后,我们点击上图红框分页按钮的数字2表示第二页,然后复制第一个评估在调试窗口中搜索,最后找到请求链接。

然后我们单击Headers在第二页查看请求数据的url。

然后我们比较第一页评估和第二页评估之间的url差异

这里验证一下朱师兄的猜想:page表示当前页数,pageSize表示每页页数。而且,我们可以得出另一个结论:第一页=0,第二页=1,然后依次进行。有同学会问:为什么第一页不是1,而是0,因为在数据库中,一般是从0开始计数的,编程行业很多数组列表都是从0开始计数的。

好了,知道了分页规则,我们就不能每次请求的时候都递增page参数吗?让我们写代码!

简要解释这些变化:

对spider_comment方法增加入参page:页数,然后在url中增加占位符,这样就可以动态修改url,爬取指定的页数。增加一个batch_spider_comment方法,循环调用spider_comment方法,暂定爬取100页。在batch_spider_comment方法的for循环中设置了一个随机的休眠时间,意在模拟用户浏览,防止因为爬取太频繁被封ip。

爬网后检查结果

6.数据清洗6.数据清理。

成功保存数据后,我们需要清理分词。对于分词,我们使用著名的词库jieba。第一步是安装jieba库:

pip3 install jieba

7.生成字云。

为了生成wordcloud,我们需要numpy、matplotlib、wordcloud和pile,所以我们应该先自己下载它们。Matplotlib库用于图像处理,wordcloud库用于生成word cloud。

注意:font_path是选择字体的路径。如果不设置默认字体,可能不支持中文。猪哥选择了Mac系统自带的宋体!最终结果:

让我们看看完整的代码

动词 (verb的缩写)摘要

考虑到新手的友好性,文章很长,详细介绍了需求、技术分析、抓取数据、清理数据和最终分析数据。让我们总结一下我们在本文中学到的内容:

如何分析并找出加载数据的url如何使用requests库的headers解决Referer和User-Agent反扒技术如何找出分页参数实现批量爬取设置一个爬虫间隔时间防止被封ip数据的提取与保存到文件使用jieba库对数据分词清洗使用wordcloud生成指定形状的词云

这是一套完整的数据分析案例。希望大家可以自己尝试,探索更多有趣的案例,做有趣的人~



Powered by 久久国产精品视频在线 @2013-2021 RSS地图 HTML地图

2013-2021 版权所有