python 爬取手机王者荣耀盒子出装

这是jack 老哥的教程,自己修改了一下,原URL:https://blog.csdn.net/c406495762/article/details/76850843

要点:1.hero.ljust(26) 在最左方,26是总str长度

   2.end='\t\t' 代表不换行
   3.使用fiddler 抓包

import requests

def get_hero(heros_url):
    '''把所有英雄跟ID都罗列出来'''
    print('*' * 100)
    print('欢迎使用《王者荣耀》出装下助手!'.center(100))
    print('*' * 100)
    req = requests.get(url = heros_url, headers = headers).json()
    flag = 0
    for each_hero in req['list']:
        flag += 1
        hero='%sID:%s' % (each_hero['name'], each_hero['hero_id'])
        print(hero.ljust(26), end='\t\t')              #在最左方,26是总str长度
        if flag == 3:                                 #3个就换行
            print()
            flag = 0

def get_equips(id):
    '''输入武器的ID,返回的是对应的name,price'''
    weapon_url = "http://gamehelper.gm825.com/wzry/equip/list?channel_id=90009a&app_id=h9044j&game_id=7622&game_name=%E7%8E%8B%E8%80%85%E8%8D%A3%E8%80%80&vcode=12.0.3&version_code=1203&cuid=2654CC14D2D3894DBF5808264AE2DAD7&ovr=6.0.1&device=Xiaomi_MI+5&net_type=1&client_id=1Yfyt44QSqu7PcVdDduBYQ%3D%3D&info_ms=fBzJ%2BCu4ZDAtl4CyHuZ%2FJQ%3D%3D&info_ma=XshbgIgi0V1HxXTqixI%2BKbgXtNtOP0%2Fn1WZtMWRWj5o%3D&mno=0&info_la=9AChHTMC3uW%2BfY8%2BCFhcFw%3D%3D&info_ci=9AChHTMC3uW%2BfY8%2BCFhcFw%3D%3D&mcc=0&clientversion=&bssid=VY%2BeiuZRJ%2FwaXmoLLVUrMODX1ZTf%2F2dzsWn2AOEM0I4%3D&os_level=23&os_id=dc451556fc0eeadb&resolution=1080_1920&dpi=480&client_ip=192.168.0.198&pdunid=a83d20d8"
    req = requests.get(url=weapon_url, headers=headers).json()
    equips = {}                                      #所有武器{ID:[name,price]   ,,,}
    for equip in req['list']:
        equips[equip['equip_id']] = [equip['name'], equip['price']]
    try:
        return equips[str(id)][0],equips[str(id)][1]
    except:
        print('装备不对!!')

def get_hero_id(id):
    '''输入英雄的ID,得到名字、简介、多个装备推荐'''
    hero_url = "http://gamehelper.gm825.com/wzry/hero/detail?hero_id={}&channel_id=90009a&app_id=h9044j&game_id=7622&game_name=%E7%8E%8B%E8%80%85%E8%8D%A3%E8%80%80&vcode=12.0.3&version_code=1203&cuid=2654CC14D2D3894DBF5808264AE2DAD7&ovr=6.0.1&device=Xiaomi_MI+5&net_type=1&client_id=1Yfyt44QSqu7PcVdDduBYQ%3D%3D&info_ms=fBzJ%2BCu4ZDAtl4CyHuZ%2FJQ%3D%3D&info_ma=XshbgIgi0V1HxXTqixI%2BKbgXtNtOP0%2Fn1WZtMWRWj5o%3D&mno=0&info_la=9AChHTMC3uW%2BfY8%2BCFhcFw%3D%3D&info_ci=9AChHTMC3uW%2BfY8%2BCFhcFw%3D%3D&mcc=0&clientversion=&bssid=VY%2BeiuZRJ%2FwaXmoLLVUrMODX1ZTf%2F2dzsWn2AOEM0I4%3D&os_level=23&os_id=dc451556fc0eeadb&resolution=1080_1920&dpi=480&client_ip=192.168.0.198&pdunid=a83d20d8". \
        format(str(id))
    req = requests.get(url=hero_url, headers=headers).json()
    print('\n历史上的%s:\n    %s' % (req['info']['name'], req['info']['history_intro']))#英雄简介
    for equip in req['info']['equip_choice']:          #在 装备套件list里,在这个路径里有好几个装备套装
        print('\n%s:\n   %s' % (equip['title'], equip['description']))#装备简介
        all_price = 0
        flag=0
        for icon in equip['list']:                    #在此装备套件里
            flag+=1
            id=icon['equip_id']
            name,price= get_equips(id)
            zhuangbei='%s:%s' % (name, price)#无尽战刃:2140,每3个一行写出
            print(zhuangbei.ljust(10), end='\t')
            if flag == 3:
                print()
                flag = 0
            all_price += int(price)       #循环里每个价格相加
        print('神装套件价格共计:%d' % all_price)

if __name__ == '__main__':

    headers = {'Accept-Charset': 'UTF-8',
            'Accept-Encoding': 'gzip,deflate',
            'User-Agent': 'Dalvik/2.1.0 (Linux; U; Android 6.0.1; MI 5 MIUI/V8.1.6.0.MAACNDI)',
            'X-Requested-With': 'XMLHttpRequest',
            'Content-type': 'application/x-www-form-urlencoded',
            'Connection': 'Keep-Alive',
            'Host': 'gamehelper.gm825.com'}

    url= "http://gamehelper.gm825.com/wzry/hero/list?channel_id=90009a&app_id=h9044j&game_id=7622&game_name=%E7%8E%8B%E8%80%85%E8%8D%A3%E8%80%80&vcode=12.0.3&version_code=1203&cuid=2654CC14D2D3894DBF5808264AE2DAD7&ovr=6.0.1&device=Xiaomi_MI+5&net_type=1&client_id=1Yfyt44QSqu7PcVdDduBYQ%3D%3D&info_ms=fBzJ%2BCu4ZDAtl4CyHuZ%2FJQ%3D%3D&info_ma=XshbgIgi0V1HxXTqixI%2BKbgXtNtOP0%2Fn1WZtMWRWj5o%3D&mno=0&info_la=9AChHTMC3uW%2BfY8%2BCFhcFw%3D%3D&info_ci=9AChHTMC3uW%2BfY8%2BCFhcFw%3D%3D&mcc=0&clientversion=&bssid=VY%2BeiuZRJ%2FwaXmoLLVUrMODX1ZTf%2F2dzsWn2AOEM0I4%3D&os_level=23&os_id=dc451556fc0eeadb&resolution=1080_1920&dpi=480&client_ip=192.168.0.198&pdunid=a83d20d8"
    get_hero(url)
    print()
    id=input('请输入要查询的英雄ID:')
    try:
        get_hero_id(id)
    except:
        print('输入ID有问题')


 
 

效果图:



猜你喜欢

转载自blog.csdn.net/qq_38282706/article/details/80300679