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辞書を取得する
ステップ4:データをダウンロードして保存する
フォルダの中に画像が見えます。ダウンロードしました。
図のように:
ここでは、Pythonを使って英雄連盟の皮膚原画を取ることを教えます。これについて紹介します。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に関する皮膚の内容は以前の文章を検索したり、次の関連記事を見たりしてください。これからもよろしくお願いします。