前端ajax获取最近kpl和lpl的比赛赛程并本地导出csv格式文件

前端ajax获取最近kpl和lpl的比赛赛程并本地导出csv格式文件

前言

在浏览器的console面板中,通过ajax,将lpl和kpl的赛程信息搞出来。
涉及到的api接口:
kpl的是:
https://tga-openapi.tga.qq.com/web/tgabank/getSchedules?seasonid=KPL2023S2&is_people=1
lpl的是:
https://apps.game.qq.com/lol/match/apis/searchBMatchInfo_bak.php?..

使用的简单js函数体

1、data_to_csv

// 导出data数据,为csv文件。表现为:下载csv文件
function data_to_csv(data, name) {
            const blob = new Blob(data, {type: 'text/csv,charset=UTF-8'});
            const uri = URL.createObjectURL(blob);
            let downloadLink = document.createElement('a');
            downloadLink.href = uri;
            downloadLink.download = (name+".csv")||"temp.csv";
            document.body.appendChild(downloadLink);
            downloadLink.click();
            document.body.removeChild(downloadLink);
}

2、加载jquery

// 简单加载个js库,比如:加载jquery
function js_load(url){
	var js = top.document.createElement('script');
	js.type = 'text/javascript';
	js.src = url;
	top.document.head.append(js);
}
js_load('https://libs.baidu.com/jquery/1.8.3/jquery.min.js');

下载kpl赛程

// 为了方便调用,搞成一个简单的函数
function down_kpl() {
	var durl = 'https://tga-openapi.tga.qq.com/web/tgabank/getSchedules?seasonid=KPL2023S2&is_people=1';
	jQuery.ajax({
		url: durl,
		dataType: 'json',
		success: function(res){
			console.log('ok', res);
			var dx = res.data;
			var items = [];
			items.push(["赛季", "比赛名", "比赛分组", "比赛时间", "主队分组", "主场队伍1",  "客场队伍2", "客队分组", '\n'])
			for(var i=0; i<dx.length; i++){
				var item = dx[i];
				items.push([item['season'], item['stage_name'], item['match_group'], item['match_time'], item['host_group'], item['hname_zh_CN'],  item['gname_zh_CN'], item['guest_group'], '\n'])
			}
			if (items && items.length>1) {
				data_to_csv(items, "kpl-赛程");
			}
		},
		complete: function(res){
			//console.log('err', res);
		}
	})
}

下载lpl赛程

// 为了方便调用,搞成一个简单的函数
var downlpl_nday = 15;  // 下载从今天算起,最近15天的赛程
function down_lpl(){
    var tnow = new Date();
	var durl_start=tnow.toLocaleDateString('zh', {hour12: false}).replaceAll("/", "-");
	var tend = new Date(tnow.getTime()+1000*3600*24*downlpl_nday)
	var durl_end=tend.toLocaleDateString('zh', {hour12: false}).replaceAll("/", "-");
	var durl = 'https://apps.game.qq.com/lol/match/apis/searchBMatchInfo_bak.php?p8=5&p1=190&p4=&p2=&p9='
		+ durl_start + '%2000%3A00%3A00&p10=' + durl_end +  '%2023%3A59%3A59&p6=3&p11=&p12=&page=1&pagesize=9999&r1=retObj_lpl&_=1687082345131';
	js_load(durl);
	setTimeout(function(){
		var ddd = retObj_lpl.msg.result;
		var items = [];
		items.push(["赛季", "比赛名", "比赛时间", "比赛周", "\n"]);
		for(var i=0; i<ddd.length; i++){
			var item = ddd[i];
			items.push([item['GameName'], item['bMatchName'], item['MatchDate'], item['GameProcName'],  '\n'])
		}
		if (items && items.length>1) {
			data_to_csv(items, "lpl-赛程");
		}
	}, 1000);
}

使用方法:

因为涉及到ajax跨域,所以:
方法1:
只可以在同域名的 相关网址对应的console面板中复制执行
比如:下载kpl的话,就用这个
https://pvp.qq.com/match/kpl/kingproleague/index.html
下载lpl的话,就用这个
https://lpl.qq.com/web202301/schedule.html
方法2:
在edge浏览器的插件市场上找个允许跨域执行的插件,比如:
https://microsoftedge.microsoft.com/addons/detail/allow-cors-accesscontro/bhjepjpgngghppolkjdhckmnfphffdag

鼠标点击右上角插件,将那个 C: 点亮。就可以在任何未设置 header 内容安全策略(content-security-policy)的网站执行了。
在这里插入图片描述

运行结果

就是下面这个样子的:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值