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

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

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

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

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

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

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

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

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

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

说说技术吧

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

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

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

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

在本例中就是:

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

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

英雄数据的格式

(英语水平见笑啦)

来个图——

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

长期欢迎项目合作机会介绍,项目收入10%用于酬谢介绍人。新浪微博:@冷镜,QQ:908789432
04-17 11:33
查看更多