查看原文
其他

“青铜”爬“王者”

爬虫俱乐部 Stata and Python数据分析 2023-01-01


本文作者:张   猛,中南财经政法大学金融学院

本文编辑:万   浩

技术总编:王子一


Stata&Python云端课程来啦!

      为了感谢大家长久以来的支持和信任,爬虫俱乐部为大家送福利啦!!!Stata&Python特惠课程双双上线腾讯课堂~爬虫俱乐部推出了Python编程培训课程Stata基础课程Stata进阶课程。报名课程即可加入答疑群,对报名有任何疑问欢迎在公众号后台和腾讯课堂留言哦。我们在这篇推文的最后提供了每门课程的课程二维码,大家有需要的话可以直接扫描二维码查看课程详情并进行购买哦~

引言

漫漫王者路,道阻且又长。凡事想要达到自己从未达到的高度,就要付出从未付出过的努力,爬虫也是一样。今天,小编以一个“青铜”爬虫者的身份带领大家去逛一逛王者荣耀这款手游的官网,跟大家一起爬虫的同时更多地了解一下王者中的英雄。

英雄列表

以“瑶瑶公主”页面为例,我们的目标就是对爬取官方给出的所有英雄资料介面中“生存能力”、“攻击伤害”、“技能效果”和“上手难度”这四个属性值的大小,然后对爬取的数据进行简单分析。在“XPath helper"插件的帮助下,我们成功用“//i/@style”定位了这四个值所对应节点位置。可以看到瑶瑶公主官方能力值:生存能力:70%;攻击伤害:30%;技能效果:90%,上手难度:30%。
单个页面处理完毕后,我们需要对每个英雄页面进行循环。来到王者官网的英雄资料界面,目前为止的108个英雄按推出时间依次罗列,每个英雄图像都对应着一个详细英雄介绍的超链接。我们尝试在该网页的源代码里去找到这些信息。
打开源代码后,我们发现源代码中的英雄信息列表是从“云中君”这个英雄开始的,之前的英雄信息无法获取。例如我们搜索最新的英雄“暃”后并没有结果。
这样我们只能去“Network”中寻找,最终锁定了“herolist.json”。这个json文件中包含我们想要的所有英雄的信息。其中的"cname"中包含了所有英雄的名字,“ename”中是英雄详细资料超链接中的变值,也可以说是王者荣耀官网给每个英雄的编号,“ename”、“cname”两个中的信息就是我们来到这个网页所需要的所有信息了。有了英雄名字和各自对应的编号,我们就可以循环访问每个英雄的资料界面。至于提取json文件中的信息,可以用jsonpath(obj,"$..ename"),其中"$"表示根节点;".."表示不管位置,选择所有符合位置的节点。jsonpath对于json文件的用法,相当于上文XPath对于XML文档的提取。
遍历属性值

我们爬取的各个英雄的四个属性值是一个含有四个元素的列表。以“瑶”为例,我们提取到的结果为:[width:70%,width:30%,width:90%,width:30%]。列表里的元素都是“width:10%”这样的字符串,我们用str[6:-2]截掉字符串的前六位“width:”和后两位“0%”,即可在去掉多余字符的同时将这些能力值转换成10分制。将108个英雄的不同属性值提取出来并用"append"命令依次放入四个列表中,再分别定义生成一个四项综合能力值列表和一个满熟练度综合能力值列表。我们将四项综合得分定义为前三项之和减去上手难度;满熟练度综合能力,默认熟练度很高,可忽视上手难度,即前三项能力加总。
函数counter()可以帮助我们分类每个列表中的级别有哪些,以及几个元素属于这个级别。这些能力值列表与英雄名字列表顺序一致,我们可以通过元素在列表位置使能力值与英雄相匹配。函数enumerate()可以同时列出数据和数据下标。以属性“上手难度”为例,我们可以看看各个级别的英雄都有哪些。可以看到,官方数据中上手难度9级的英雄有:李白、露娜;上手难度10级的是:百里玄策、元歌。
接下来,我们让各个能力列表更可视化,将前面的六个列表用饼图的格式显现,标记出处于各个级别的英雄个数。为更便于读者理解,我们将各个属性以及该属性的最强、最弱英雄列表放在各扇形图的顶部。

最后,我们为大家揭秘雪球网(https://xueqiu.com/) 最新所展示的沪深证券和港股关注人数增长Top10。



腾讯课堂课程二维码





 对我们的推文累计打赏超过1000元,我们即可给您开具发票,发票类别为“咨询费”。用心做事,不负您的支持!














往期推文推荐

留下想要的变量,你会几种方法?

Python:朋友圈配图,我承包了

绘制全国祠堂密度地图

 如何使用Stata绘制一幅好看的柱状图?

【爬虫篇】基于selenium爬取美团评论

 双标的莱万——足球无关政治?!

 Stata处理重复值:duplicates

It's time to send a flower to your lover!        2021各省GDP新鲜出炉

 爬虫实战-采集全国各省疫情数据

 log——为你的操作保驾护航

 一行代码教你玩转emoji

 票房遇冷的春节档口碑冠军丨《狙击手》影评分析

 学习丰县,营造良好营商环境!

 大国丢娃图:从川渝到徐州!

 丰县“失火”,殃及徐州:股市超跌近30亿!

 Unicode转义字符——编码与解码

        徐州!徐州!

        B站弹幕爬虫——冬奥顶流冰墩墩&雪容融

        不会用Stata做描述性统计表?so easy!

        丰沛之地:备足姨妈巾

 过年啦,用Python绘制一幅属于你的春联吧!

       登上爬虫俱乐部“时光机” |上“机”出发 开启一段奇妙之旅

       【基础篇】查找并输出子字符串的定位

        Stata中的小清新命令——添加观测值

        PCA(主成分分析法)降维——Python实现

       超好用的事件研究法

        如何绘制任泽平《鼓励生育基金》的几幅图

        Python 第六天——字符串

        findname——想要什么找什么

        Python字符串之“分分合合”

        PDF转docx可批量操作?——wordconvert的小技巧

        考研之后,文科生需以“do”躬“do”!

       手绘五星兴家国——用Stata绘制五星红旗

        Seminar丨董事会的性别多样化和企业创新:来自国际的证据

       Python与数据库交互——窗口函数

关于我们 


   微信公众号“Stata and Python数据分析”分享实用的Stata、Python等软件的数据处理知识,欢迎转载、打赏。我们是由李春涛教授领导下的研究生及本科生组成的大数据处理和分析团队。

   武汉字符串数据科技有限公司一直为广大用户提供数据采集和分析的服务工作,如果您有这方面的需求,请发邮件到statatraining@163.com,或者直接联系我们的数据中台总工程司海涛先生,电话:18203668525,wechat: super4ht。海涛先生曾长期在香港大学从事研究工作,现为知名985大学的博士生,爬虫俱乐部网络爬虫技术和正则表达式的课程负责人。



此外,欢迎大家踊跃投稿,介绍一些关于Stata和Python的数据处理和分析技巧。

投稿邮箱:statatraining@163.com投稿要求:
1)必须原创,禁止抄袭;
2)必须准确,详细,有例子,有截图;
注意事项:
1)所有投稿都会经过本公众号运营团队成员的审核,审核通过才可录用,一经录用,会在该推文里
为作者署名,并有赏金分成。

2)邮件请注明投稿,邮件名称为“投稿+推文名称”。
3)应广大读者要求,现开通有偿问答服务,如果大家遇到有关数据处理、分析等问题,可以在公众
号中提出,只需支付少量赏金,我们会在后期的推文里给予解答。


您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存