这是上一篇blog:爬虫抓取暗黑3国服天梯榜数据及分析
这一篇主要是抓取某一玩家角色的所有面板属性,平时在游戏中,通过天(ke)梯(long)榜只能看到大佬门的装备与技能,别人的详细面板属性是看不到的,无法直观的比较差距。
不过!!!凯恩之角最近同步英雄数据的功能好像不好使、、、置顶帖的方法我等了一天多了还没有更新我的英雄数据凯恩之角和暗黑3游戏内属性的计算方法并不一致,凯恩计算的是裸的不能再裸的属性,无buff无技能加成,而且应该还刨除了一些其他的增益,比如说,12赛季圣教军冲榜第一名:相爱不抵久相随丶#5367,其在凯恩的属性记录为:
而今天这篇blog比较尴尬的地方就在于,我无法获得用凯恩之角的计算方法下的我的数据,和抓取的大佬们的数据相比,变量太多,没什么可比性、、、期待凯恩能尽快把该功能修复完善
还是先把代码贴上来,代码中为了方便,我默认使用“相爱不抵久相随丶#5367”的BattleTag
# -*- coding: utf-8 -*-
"""
Created on Tue Feb 20 18:34:48 2018
@author: Administrator
"""
import urllib2
import re
p1=r'<div class="hero-rank h-(.+?) ">\s+<div class="hero-rank-portrait"> <span class="hero-img"></span>\s+<h3> (.+?) </h3>\s+<span class="hero-level"> 70 </span>\s+</div>\s+<div class="hero-rank-text">\s+<ul>\s+<li>\s+<h4>伤害 :\s+<em>(.+?)</em>\s+</h4>\s+<p>——世界排名:.+?</p>\s+</li>\s+<li>\s+<h4>坚韧 :\s+<em>(.+?)</em>\s+</h4>\s+<p>——世界排名:.+?</p>\s+</li>\s+<li>\s+<h4>治疗 :\s+<em>(.+?)</em>\s+</h4>\s+<p>——世界排名:.+?</p>\s+</li>\s+</ul>\s+</div>\s+<div class="hero-button"><a href="(.+?)">进入英雄页面</a></div>'
p2=r'<li attrvalue="(.+?)">.+?<!--damage-->\s+<li attrvalue="(.+?)">.+?<!--elementDamage-->\s+<li attrvalue="(.+?)">.+?<!--elementEliteDamage-->\s+<li attrvalue="(.+?)">.+?<!--critPercent-->\s+<li attrvalue="(.+?)">.+?<!--critDamage-->\s+<li attrvalue="(.+?)">.+?<!--damagePercentBonusVsElites-->'
p3=r'<li attrvalue="(.+?)">.+?<!--toughness-->\s+<li attrvalue="(.+?)">.+?<!--healing-->\s+<li attrvalue="(.+?)">.+?<!--life-->\s+<li attrvalue="(.+?)">.+?<!--armor-->\s+<li attrvalue="(.+?)">.+?<!--vitality-->\s+<li attrvalue="(.+?)">.+?<!--powerCooldownReductionPercentAll-->'
p4=r'<li attrvalue="(.+?)">.+?<!--strength-->\s+<li attrvalue="(.+?)">.+?<!--dexterity-->\s+<li attrvalue="(.+?)">.+?<!--intelligence-->\s+<li attrvalue="(.+?)">.+?<!--elementSkillDamage-->\s+<li attrvalue="(.+?)">.+?<!--skillCostReduction-->'
p5=r'<li><em>(.+?)</em>.+?<!--areaDamage-->\s+<li><em>(.+?)</em>.+?<!--attackSpeed-->\s+<li><em>(.+?)</em>.+?<!--fireSkillCostReduction-->\s+<li><em>(.+?)</em>.+?<!--crowdcontrolReduction-->\s+<li><em>(.+?)</em>.+?<!--experienceBonusPercent-->\s+<li><em>(.+?)</em>.+?<!--experienceBonus-->'
p6=r'<li><em>(.+?)</em>.+?\s+<li><em>(.+?)</em>.+?\s+<li><em>(.+?)</em>.+?\s+<li><em>(.+?)</em>.+?\s+<li><em>(.+?)</em>.+?\s+'
p7=r'<li><em>(.+?)</em>.+?\s+<li><em>(.+?)</em>.+?\s+<li><em>(.+?)</em>.+?\s+.+?\s+<!--<li><em>(.+?)</em>.+?\s+<li><em>(.+?)</em>.+?\s+<li><em>(.+?)</em>.+?'
p8=r'<li><em>(.+?)</em>.+?\s+<li><em>(.+?)</em>.+?\s+<li><em>(.+?)</em>.+?\s+<li><em>(.+?)</em>.+?\s+<li><em>(.+?)</em>.+?\s+<li><em>(.+?)</em>.+?\s+<li><em>(.+?)</em>.+?\s+'
p9=r'<li><em>(.+?)</em>.+?<!--arcaneResistance-->\s+<li><em>(.+?)</em>.+?\s+<li><em>(.+?)</em>.+?\s+<li><em>(.+?)</em>.+?\s+<li><em>(.+?)</em>.+?\s+<li><em>(.+?)</em>.+?'
p10=r'<li><em>(.+?)</em>.+?\s+<li><em>(.+?)</em>.+?\s+<li><em>(.+?)</em>.+?\s+<li><em>(.+?)</em>.+?\s+'
print "请输入您要查找的BattleTag(格式为XXXXXX#****)。输入时请将#替换为-。".decode('utf-8')
print "例:xiaoming-56789".decode('utf-8')
BattleTag='相爱不抵久相随丶-5367'
#BattleTag=raw_input("BattleTag=")
url="http://hero.d.163.com/list/"+BattleTag
print url.decode('utf-8')
request=urllib2.Request(url)
response=urllib2.urlopen(request)
data=response.read()
q=re.compile(p1)
list=re.findall(q,data)
character_count=0
for row in list:
# print("%s\t%s\t%s\t%s\t%s\t%s")%(row[0],row[1],row[2],row[3],row[4],row[5])
character_count+=1
print '\n***************************************************************\n'
for row in list:
print "职业:".decode('utf-8')+row[0].decode('utf-8')
url_character="http://hero.d.163.com/"+row[5]
print "角色URL:".decode('utf-8')+url_character.decode('utf-8')
request_character=urllib2.Request(url_character)
response_character=urllib2.urlopen(request_character)
data_character=response_character.read()
print("\n*************************主要属性****************************\n")
q2=re.compile(p2)
main_element_1=re.findall(q2,data_character)
row1=main_element_1[0]
print ("伤害:%s\t伤害(元素):%s\t伤害(元素&精英):%s\n暴击几率:%s\t暴击伤害:%s\t对精英伤害加成:%s\n")%(row1[0],row1[1],row1[2],row1[3],row1[4],row1[5])
q3=re.compile(p3)
main_element_2=re.findall(q3,data_character)
row2=main_element_2[0]
print ("坚韧:%s\t治疗:%s\t生命:%s\n护甲:%s\t体能:%s\tCDR:%s\n")%(row2[0],row2[1],row2[2],row2[3],row2[4],row2[5])
q4=re.compile(p4)
main_element_3=re.findall(q4,data_character)
row3=main_element_3[0]
print ("力量:%s\t敏捷:%s\t智力:%s\n元素伤害加成:%s\t技能消耗减少:%s\n")%(row3[0],row3[1],row3[2],row3[3],row3[4])
print("\n*************************其他属性****************************\n")
q5=re.compile(p5)
other_element_1=re.findall(q5,data_character)
row4=other_element_1[0]
print ("范围伤害:%s\t攻击速度提高:%s\t火焰技能消耗减免:%s\n控场效果减免:%s\t经验值:%s\t每次击杀获得经验值:%s\n")%(row4[0],row4[1],row4[2],row4[3],row4[4],row4[5])
q6=re.compile(p6)
other_element_2=re.findall(q6,data_character)
row5=other_element_2[0]
print ("伤害减免:%s\t近战减伤:%s\t远程减伤:%s\n降低精英怪伤害:%s\t格挡几率:%s\n")%(row5[0],row5[1],row5[2],row5[3],row5[4])
q7=re.compile(p7)
other_element_3=re.findall(q7,data_character)
row6=other_element_3[0]
print ("生命值加成:%s\t击杀生命恢复:%s\t每秒生命恢复:%s\n生命窃取:%s\t生命之球恢复:%s\t击中生命回复:%s\n")%(row6[0],row6[1],row6[2],row6[3],row6[4],row6[5])
q8=re.compile(p8)
other_element_4=re.findall(q8,data_character)
row7=other_element_4[0]
print ("火焰技能伤害加成:%s\t秘法技能伤害加成:%s\t冰寒技能伤害加成:%s\n物理技能伤害加成:%s\t毒素技能伤害加成:%s\t电击技能伤害加成:%s\n神圣技能伤害加成:%s\n")%(row7[0],row7[1],row7[2],row7[3],row7[4],row7[5],row7[6])
q9=re.compile(p9)
other_element_5=re.findall(q9,data_character)
row8=other_element_5[0]
print ("秘法抗性:%s\t冰寒抗性:%s\t火焰抗性:%s\n电击抗性:%s\t物理抗性:%s\t毒素抗性:%s\n")%(row8[0],row8[1],row8[2],row8[3],row8[4],row8[5])
q10=re.compile(p10)
other_element_6=re.findall(q10,data_character)
row9=other_element_6[0]
print ("拾取距离加成:%s\t移动速度:%s\t金币获取:%s\n魔法寻获:%s\n")%(row9[0],row9[1],row9[2],row9[3])
print '\n\n******************************************************************'
print '* *'
print '******************************************************************\n\n'
运行结果:
明天要走亲戚,后天在家写个界面出来~~正好好长时间没用QT了~~~