dota玩家与英雄契合度的计算器,python语言scrapy爬虫的使用

首发:个人博客,更新&纠错&回复

演示地址在这里,代码在这里

一个dota玩家与英雄契合度的计算器(查看效果),包括两部分代码:

1.python的scrapy爬虫,总体思路是page->model->result,从网页中提取数据,组成有意义的数据结构,再拿这数据结构做点什么。

在这个项目中,爬虫的用处是从游久网dota数据库上抓取dota英雄和物品的数据和照片存到本地磁盘,数据存为json格式,方便在网页应用中直接使用。

2.网页应用,使用dota英雄数据、自己编写的小伙伴们的特征数据、自己编写的契合度计算公式,来计算对每个小伙伴来说最契合他的英雄。

算法主要用到的英雄数据是【英雄标签】和【英雄事务评分】,前者说明了该英雄是近战还是远程,主属性是什么,是否能打辅助、Gank、后期等,后者则是对该英雄在Dps、Gank、Support等方面的能力的打分。

这两个数据都来自网络,抓取到本地之后做了一些调整,例如将原来的“眩晕”“控制”两个标签改为了“小控”“小团控”“团控”三个标签,“后期”标签变为“后期”“大后期”两个标签,增加了“不稳定”“多线”“特殊”等特点, 这让计算出的契合度更准确了一点,当然这也远远不是尽善尽美,例如同样是减速,冰女和暗牧的减速当然不同,但还没做更进一步的细分。

另外,对英雄的标签也进行了一些修改和补充,这个工作也还没做完。

我都是边计算契合度,边发现需要改的地方,改的目的就是使计算出的结果与实际情况相符,但又不是硬去凑这个数字。

说说技术吧

只有爬虫值得一说,网页那部分只是做实验和玩儿的,没太多可说,算法自行参考代码就好。

scrapy爬虫,非常强大,基本的需求都覆盖到了,逻辑流程也已经定义好了,只需要程序员在特定的点编写特定角色组件的定义代码。 这种方式很熟悉,每个框架都是这么玩的,控制流是定义好的,而且在它的手里,只有涉及业务的地方需要程序员给出自己的实现。

这个中文文档还是不错的,跟着其中的教程写helloworld,跑通了之后一点点改你的helloworld,遇到困难的地方就查文档,或者百度一下。

关键类:scrapy爬虫类,item模型类,pipeline处理器类。

爬虫组件从指定的url获取html字符串,并解析dom,从中采集信息,构造item对象

框架将构造好的item对象交给处理器组件,处理器组件根据item对象内容,进行处理

在本例中就是:

爬虫从dota网站抓取html字符串,解析dom获得英雄的名称、图片路径、英雄详细页面url,以及物品的名称、图片路径

爬虫又从英雄详细页面抓取html字符串,解析dom获得英雄的标签和各种数据

每个英雄的名称、图片路径、标签、各种数据构成英雄模型对象

每个物品的名称、图片路径构成物品模型对象

保存图片处理器将英雄图片和物品图片存到本地磁盘,并根据英雄名称、物品名称,进行重命名(重命名之前是无意义的名称)

保存英雄数据处理器将英雄数据存到本地磁盘的一个文本文件中,并组成json格式 7 保存物品数据处理器将物品数据存到本地磁盘的一个文本文件中,并组成json格式

显然前2步是抓取和解析,其后两步是做成模型对象,最后三步是处理模型对象。 顺序非常清楚。

由于我python不熟,都是边写代码边查,基本语法,库的使用,可能有的地方写得比较蠢,请不要在意这些细节。

英雄数据的格式

    {      "blue_add": 1.75, //智力成长(蓝色的是智力……)      "gank": 7.2, //gank能力评分      "speed": 315, //初始速度      "id": "132", //英雄id      "blue": 19, //初始智力      "armor": 7.22, //初始护甲      "excute_after": 0.51, //施法后摇      "support": 5.1, //support能力评分      "green_add": 3.2, //敏捷成长      "attack_after": 0.6, //攻击后摇      "ballistic": 0, //弹道速度      "war": 8.1, //团战能力评分      "red": 15, //初始力量(红色)      "tags": "敏捷,近战,后期,减速",//标签们       "hp": 435, //初始生命      "attack_before": 0.3,//攻击前摇       "attack_max": 54, //初始攻击上限      "name": "恐怖利刃", //英雄名称      "dps": 8.9, //dps能力评分      "meat": 6.0, //肉盾能力评分(meat哈哈)      "attack_min": 48, //初始攻击下限      "red_add": 1.9, //力量成长      "excute_before": 0.5, //施法前摇      "range": 128, //攻击距离      "green": 22, //初始敏捷(绿色)      "mp": 247, //初始魔法      "push": 8.5//push能力评分    }

(英语水平见笑啦)

来个图——

长期欢迎项目合作机会介绍,项目收入10%用于酬谢介绍人。新浪微博:@冷镜,QQ:908789432。

时间: 2024-10-13 16:03:59

dota玩家与英雄契合度的计算器,python语言scrapy爬虫的使用的相关文章

新个税计算器 Python脚本

新个税计算器 Python脚本 新个税计算器(Python):一个极其简单,也没有做任何排错处理的初学脚本,发上来只是为了大家可以增加自己的代码丰富它. 点这里下载:NewTax.zip 1 # -*- coding: cp936 -*- 2 #This script is using in MIC only,Powered by rexchenhan 3 #养老保险公司比例 4 EI_CoRate=0.323 5 #养老保险个人比例 6 EI_EmpRate=0.11 7 #公积金公司比例 8

【个人计划】告别英雄联盟,开始学习Python

不知不觉中接触英雄联盟已经快两年了,记得是大四那年找完工作,一下比较清闲,宿舍刚好有lol的氛围,于是乎,四个新手在何大神的带领下,走上了lol的道路.不得不说,从那以后,花费在lol上的时间太多啦,据我估计,个人玩了将近2000了吧,别看局数这么多,其实就是个渣渣,技术太菜了,这也就是我告别英雄联盟的原因啦,根本没有玩这个游戏的天赋,技术上没有一点点提高,一直就是在浪费时间罢了. 就我个人而言,1.在补兵方面,时好时坏,而且有时候性子急,不太注重前期的补兵发育,往往导致输的结局:2.游戏中大部

皮尔森相似度计算举例(R语言)

整理了一下最近对协同过滤推荐算法中的皮尔森相似度计算,顺带学习了下R语言的简单使用,也复习了概率统计知识. 一.概率论和统计学概念复习 1)期望值(Expected Value) 因为这里每个数都是等概率的,所以就当做是数组或向量中所有元素的平均数吧.可以使用R语言中函数mean(). 2)方差(Variance) 方差分为population variance总体方差和sample variance样本方差,区别是总体方差除以N,样本方差除以N-1. 数理统计中常用样本方差,R语言的var()

简易计算器c语言源码,

本人新学, 用的都是最基本的语句, 程序功能不完善, 有以下问题, 1.大数据无法计算, 2.较大整型数据输出为浮点型,(因为是老师布置的作业,有要求含实数的算术计算输出要含小数.) 3.无法用()提升运算优先级, 欢迎提出改进意见 代码附上: void fun1()//算术运算函数{ char a[20][30],b[20]; double c[20],s; int i,j,k,flag; system("cls");// printf("输入算术式\n格式如:31+42*

DotA – We,the Community.

DOTA始于2002年,首作者是一位叫做EUL的WAR3玩家,之后又历经了包括Gunisoo等玩家作者之手,后来Gunisoo与团队中的Pendragon发生矛盾后离开了DOTA:那时DOTA初具人气但是尚有大量平衡性的不足和遗留BUG,这一切在冰蛙(ICEFROG=IF)接手后得到了解决. 大约在2005年的某个时候,IF接手DOTA开始制作6.0版本,大部分玩家也是在这个时候知道了DOTA变成了DOTAer的一员,国内兴起也就是大约在2007~2008年的某个时候,似乎前些日子还是满城CS和

unity游戏之羊刀与Pendragon复盘:DotA做对了什么

[狗刨学习网专稿,转载请注明出处] 狗刨学习网报道/电竞和MOBA已经成为近几年业内非常火的名词,据Riot Games此前公布的数据显示,2014年<英雄联盟>S4韩国总决赛局巅峰同时观看人数突破1120万人,而据SuperData在2014年10月份透露,<英雄联盟>2014年收入将突破11亿美元.毫无疑问,<英雄联盟>和电竞以及MOBA都获得了世界级的成功. 不过,谈到这一切,相信所有人都知道DotA地图对此的贡献,可以说,正是由于DotA的奠基,才有了全球电竞如

Dota依旧,时光不老

我已经很老了,老到记不清很多事情,但我仍然清晰的记得... 当年,嘲笑这个第一眼看上去只有小树人跟小骷髅狗45度角相互挠的无聊游戏 记得第一次合出力量护腕时的兴奋 记得第一次发现野外商店时的惊讶 记得第一次合出的狂战斧 记得第一次杀死了天灾军团的电脑puck...并很长一段时间怀疑Icefrog设计这个英雄时的是不是睡着了 记得第一次用撼地神牛装备狂战斧打钱时的霸气姿势 记得第一次用pom连中12箭时...飙出的想法:以后RD有这个英雄就是我的,要不就GG 记得第一次用sf两压收掉一波兵时...

从零开始学习PYTHON3讲义(十一)计算器升级啦

(内容需要,本讲中再次使用了大量在线公式,如果因为转帖网站不支持公式无法显示的情况,欢迎访问原始博客.) <从零开始PYTHON3>第十一讲 第二讲的时候,我们通过Python的交互模式来入门Python基本知识.当时把Python当成了一个计算器使用.随后从第三讲开始,一直到第十讲,我们进入了编程的方式,并且不断的深入,到第九讲,我们已经完成了Python基本语言.语法部分的学习. 每一讲都有大量的编程练习,估计大家也累了,这一讲休息一下,我们回到把Python当做计算器的状态.当然内容还是

Python3中级玩家:淘宝天猫商品搜索爬虫自动化工具(第一篇)

Python3中级玩家:淘宝天猫商品搜索爬虫自动化工具(第一篇) 一.前言 大家好,今天我要来讲讲一个比较实用的爬虫工具,抓取淘宝的关键字商品信息,即是: 输入关键字,按照价格等排序,抓取列出的商品信息以及下载图片,并且支持导出为Excel. 如果如下: 看完下面的讲解,Python语言就掌握得差不多,中级水平了,而且这个封装后的工具还是很好用的. 感觉自己萌萌哒~~ 二.原理 大家知道什么叫爬虫,它也叫网络蜘蛛,机器人等,意思就是说自动的程序,可以去抓取使用网络协议传输的内容. 目前来讲爬虫主