python dota2数据 3 下载胜负数据

目标:下载每场比赛获胜方或战败方的5个英雄,用于后续分析。

由于get_match_history()返回的内容中并不包括比赛胜负,还需要对每一场比赛使用get_match_details()查询,效率较低。
使用另一个查询比赛的API,get_match_history_by_seq_num():

{status1 - Success8 - Matches_requested must be greater than 0statusDetail        - Message explaining a status that is not equal to 1[matches]           - See get_match_details()
}

该函数可直接查询从指定sequence_id开始的比赛,返回的内容包含了get_match_details()中的比赛详细信息。(sequence_id与match_id不同)

取起始比赛sequence_id为3100000000,经查询为2017年11月16日,7.07版本发布后几天。
将该数字存在一个文件latest.dat中,用于每次查询前后读取和更新,便于中断和继续下载。

获取数据后对其进行处理,使每一行先存储获胜方5个英雄的ID,再存储战败方5个英雄的ID,最后为比赛的sequence_id,以这种形式存储在matches.dat中。

import dota2api
import time
api = dota2api.Initialise()counter = 0while 1:#读取已下载的最新比赛的sequence_idf_latest = open('latest.dat', 'r')latest = int(f_latest.readline())latest += 1f_latest.close()#调用API获取比赛信息while(1):try:data_got = api.get_match_history_by_seq_num(matches_requested = 50, start_at_match_seq_num = latest)except (Exception):print('error, wait 3 seconds.******************************************')time.sleep(3)continueelse:breakmatches = data_got['matches']#写入文件f_data = open('matches.dat', 'a')#对获取的每场比赛for m in matches:#比赛IDid = m['match_id']heroes = []#获胜方win = m['radiant_win']#所有玩家players = m['players']#排除人数不为10的,如soloif len(players) != 10:print('player num error: ', len(players))continue#获取所有上场英雄for p in players:hero_id = p['hero_id']heroes.append(hero_id)#天辉英雄radiant_team = heroes[0:5]#夜魇英雄dire_team = heroes[5:10]#按ID排序radiant_team.sort()dire_team.sort()#排除英雄ID错误if radiant_team[0] == 0:print('player hero error: 0')continueif dire_team[0] == 0:print('player hero error: 0')continue#按获胜方和战败方存储英雄IDif win: win_team = radiant_teamlose_team = dire_teamelse:win_team = dire_teamlose_team = radiant_team#当前比赛的sequence_idlatest = m['match_seq_num']counter += 1print(counter, id, win, win_team, lose_team, latest)#写入文件for h in win_team:f_data.write(str(h) + ' ')for h in lose_team:f_data.write(str(h) + ' ')f_data.write(str(latest))f_data.write('\n')#更新latest.datf_update = open('latest.dat', 'w')f_update.writelines(str(latest))f_update.close()f_data.close()

运行后的matches.dat:

python dota2数据 3 下载胜负数据相关推荐

  1. Python Celery异步快速下载股票数据!炒股还怕输吗?

    上一篇股票文章中,我们讲了如何通过tushare下载股票数据,并存入mongodb: Python 获取股票数据并存入MongoDB实战教程 其中有非常大的优化空间,比如,单线程的下载速度太慢了,能不 ...

  2. tgw介绍和股票历史日线数据程序化下载——量化数据中台系列(四)

    github 1. tgw https://github.com/tgw2023/tgw 2. AmazingQuant https://github.com/zhanggao2013/Amazing ...

  3. python + Selenium 实现自动化查询问财数据及下载Excel数据并存入到mysql

    问财的数据海量及时,作为量化交易的数据来源也是一种不错的选择,之前也用过一些免费的api,但是数据不是很完整,时效性也不高,试了一下问财觉得很不错,不过下载有次数限制,非会员每天只能导出2次,会员每天 ...

  4. 使用python Request Module自动下载网站数据

    获取请求头 手动获取: 点击右键,选择检查,再选择network,刷新一下(ctrl+r),随机选其中一个内容,将 User-Agent 后的内容复制出来就行: import urllib.reque ...

  5. linux下载测序数据,高速下载测序数据(SRA,Fastq等)

    一.测试环境及工具 Linux(Ubuntu 18.04.1) Aspera (Aspera Connect version 3.9.9.177872) image 二.Aspera 下载 image ...

  6. 在怀俄明大学天气数据网站下载探空数据详细步骤

    一.登录网址 怀俄明大学天气数据网站:weather.uwyo.edu/wyoming/ 二.点击"Upper Air" 图1 三.在打开"Upper Air" ...

  7. linux下载TCGA数据,如何下载TCGA数据/TCGA数据下载小教程

    1. 什么是TCGA?TCGA中有哪些数据? TCGA的全称是The Cancer Genome Atlas, 这个项目始于2005年,它旨在使用基因测序和生物信息学编目与癌症有关的基因突变.TCGA ...

  8. python:osmnx包下载城市路网数据

    OSMnx 是一个可从 OpenStreetMap 下载地理空间数据的软件包,并对真实世界的街道网络和任何其他地理空间几何进行建模.投影.可视化和分析.但是这个包在使用时遇到了一些让人头疼的问题,在这 ...

  9. Python量化策略入门1-如何利用聚宽(JoinQuant)下载金融数据

    @[TOC]量化策略入门1-如何利用聚宽(JoinQuant)下载金融数据 前言 量化策略入门系列文章是本人学习股票量化笔记,最终输出结果希望是一个可在本地运行的回测框架,包含数据获取,数据处理,策略 ...

最新文章

  1. 编程大神竟“玩”出了不像 C 的 C 程序
  2. 免费下载田志刚《呼叫中心知识库心得》电子书
  3. .Net高级技术——程序集
  4. codeforces 960A Check the string
  5. Python :给类或者类的对象添加打印内容 def __repr__(self)
  6. leetcode207. 课程表(dfs/bfs)
  7. Cisco Adsl 详细配置
  8. mysql教程多表查询_解析Mysql多表查询的实现
  9. react组件卸载调用的方法_React组件如何还能跑得再快一点
  10. 聊一聊数学中的基本定理(四)——微积分基本定理
  11. html5创建桌面快捷方式,iOS APP创建桌面快捷方式
  12. python 进化树_科学网-应用Raxml软件构建最大似然法系统进化树-王翠的博文
  13. 网络棋牌游戏创造快乐心情
  14. zzzfun网站连接不上服务器,zzzfun网页版
  15. 【Java项目-飞翔的小鸟】附源码
  16. 个人常用观影网址记录
  17. Opencv批量修改图片尺寸并保存
  18. 如何启动 WordPress 博客 – 简易指南 – 创建博客(2021)
  19. STEP 标准基础概念-刘亚龙
  20. Python数据处理

热门文章

  1. 微软免费电子书下载!
  2. ESXI6.5学习记录(1):VMware安装ESXI6.5全教程
  3. idea查找替换快捷键,批量处理
  4. 中国氧化钽粉市场深度研究分析报告
  5. Win10 家庭版 升级到 专业版 的流程
  6. AI小作文搞崩科大讯飞股价 科技“魔法”反噬科企
  7. Oracle调用JAVA接口
  8. VsCode Studio的C/C++代码自动补全
  9. vscode自动补全标签失效的解决方法
  10. java vr 开发_VR:虚拟与现实