python告诉你云顶之弈国服榜上有哪些大神

1.前序

想要得到云顶之弈游戏的排名数据,需要前往云顶之弈官网
https://lol.qq.com/tft/#/rank/list

image.png

通过谷歌浏览器,浏览者模式(F12),我们可以解析出排名数据接口。

# area_id   哪个区
# offset  第几页
# sign  加签串
http://qt.qq.com/lua/mlol_battle_info/get_total_tier_rank_list?area_id=XX&offset=XX&sign=XX

知道了这些,接下来就是如何对数据抓取及处理了。但在对数据做处理之前,我们需要处理一下加签串,即sign*。

def signCal(areaID,offset):
    str1 = 'area_id='+areaID+'&offset='+str(offset)+'qtld^xibt#a*'  #用于计算sign签名的字符串,最后一项为key
    b = str1.encode(encoding='utf-8')
    m = hashlib.md5()
    m.update(b)
    str_md5 = m.hexdigest()                                         #MD5编码
    return str_md5

数据获取及处理

def __init__(self):
    self.url = "https://qt.qq.com/lua/mlol_battle_info/get_total_tier_rank_list?area_id={0}&offset={1}&sign={2}"
def run(self, area_id, offset, sign):
    res = requests.post(self.url.format(str(area_id), str(offset), sign)).json()
    # print(res)
    # 对返回的数据做判断
    if "data" not in res or "player_list" not in res["data"]:
        return None

2.数据解析

当我们抓取到数据后,接下来就是要对数据做解析,解析数据就相对简单些。直接贴上解析数据代码

# 解析返回的数据
summoner_list = []
for summoner_item in res["data"]["player_list"]:
    if "tier_title" not in summoner_item:
        continue
    if "name" not in summoner_item:
        continue
    if "uuid" not in summoner_item:
        continue
    if "ranking" not in summoner_item:
        continue
    if "league_points" not in summoner_item:
        continue
    summoner_list.append({
        "area_id": area_id,
        "tier": summoner_item["tier_title"],
        "name": summoner_item["name"],
        "uuid": summoner_item["uuid"],
        "area": 1,
        "ranking": summoner_item["ranking"],
        "points": summoner_item["league_points"]
    })
insert_in_db(summoner_list)
return summoner_list
image.png

3.演示

数据过长,这里仅贴部分数据,有兴趣的可以自己跑一遍代码,验证一下效果。

image.png
image.png

更多源码信息,请参考原文

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

友情链接更多精彩内容