Pythonで英雄連盟の皮膚原画を取るように教えてあげます。


一、推理の原理
1.まず『英雄連盟』公式サイトに行って、英雄と皮膚の写真のURLを見つけます。
http://lol.qq.com/data/info-heros.shtml
在这里插入图片描述
2.上のURLからすべての英雄がいます。F 12を押してソースコードを調べたら、英雄と皮膚の写真は直接に提供されていません。JSファイルに隠れています。この時Networkをつけなければならなくて、jsウィンドウを探し当てて、ホームページを更新して、1つのchampion.jsのオプションを見て、クリックして字典を見ることができます。――中にはすべての英雄の名前(英語)と対応する番号が含まれています。
在这里插入图片描述
3.ただし、英雄の名前(英語)と対応する番号だけが画像の住所を見つけられないので、ホームページに戻って適当にヒーローを注文して、ページをジャンプしたら英雄と皮膚の写真が全部あります。しかし、ダウンロードするには元の住所を探す必要があります。これはマウスの右クリックで「新しいタブページで開く」を選択して、新しいページこそ写真の元の住所です。
在这里插入图片描述
4.図中の赤い枠は私達が必要とする写真の住所です。分析したところ、英雄と皮膚の住所は番号だけ違っています。先ほど見つかったjsファイルには英雄の番号がありますが、皮膚のコードは自分で定義できます。とにかくヒーローの皮膚は20個を超えないです。
在这里插入图片描述
二、推理コード
ステップ1:js辞書を取得する

def path_js(url_js):
    res_js = requests.get(url_js, verify = False).content
    html_js = res_js.decode("gbk")
    pat_js = r'"keys":(.*?),"data"'
    enc = re.compile(pat_js)
    list_js = enc.findall(html_js)
    dict_js = eval(list_js[0])
    return dict_js
ステップ2:js辞書からkey値を抽出し、urlリストを生成する。

def path_url(dict_js):
    pic_list = []
    for key in dict_js:
        for i in range(20):
            xuhao = str(i)
            if len(xuhao) == 1:
                num_houxu = "00" + xuhao
            elif len(xuhao) == 2:
                num_houxu = "0" + xuhao
            numStr = key+num_houxu
            url = r'http://ossweb-img.qq.com/images/lol/web201310/skin/big'+numStr+'.jpg'
            pic_list.append(url)
    print(pic_list)
    return pic_list
ステップ3:js辞書からvalue値を抽出し、nameリストを生成する。

def name_pic(dict_js, path):
    list_filePath = []
    for name in dict_js.values():
        for i in range(20):
            file_path = path + name + str(i) + '.jpg'
            list_filePath.append(file_path)
    return list_filePath
在这里插入图片描述
ステップ4:データをダウンロードして保存する

def writing(url_list, list_filePath):
    try:
        for i in range(len(url_list)):
            res = requests.get(url_list[i], verify = False).content
            with open(list_filePath[i], "wb") as f:
                f.write(res)
 
    except Exception as e:
        print("      ,%s" %(e))
        return False
ステップ5:メインプログラムを実行する

if __name__ == '__main__':
    url_js = r'http://lol.qq.com/biz/hero/champion.js'
    path = r'./data/'   #        
    dict_js = path_js(url_js)
    url_list = path_url(dict_js)
    list_filePath = name_pic(dict_js, path)
    writing(url_list, list_filePath)
運転後はコンソールで画像ごとのURLをプリントアウトします。
在这里插入图片描述
フォルダの中に画像が見えます。ダウンロードしました。
図のように:
在这里插入图片描述
ここでは、Pythonを使って英雄連盟の皮膚原画を取ることを教えます。これについて紹介します。Pythonに関する皮膚の内容は以前の文章を検索したり、次の関連記事を見たりしてください。これからもよろしくお願いします。